mod加减乘除
(a+b) mod n = ((a mod n) + (b mod n)) mod n
(a*b) mod n = ((a mod n) * (b mod n)) mod n
原文链接:https://blog.csdn.net/Encore47/article/details/113776696
//跳房子 2914 2971 98 3031
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=1e6+5;
ll s[10][10],a[10],sb[10][10][10][10][10][10];
ll ans;
void solve()
{
if(!sb[a[1]][a[2]][a[3]][a[4]][a[5]][a[6]])
sb[a[1]][a[2]][a[3]][a[4]][a[5]][a[6]]++,ans++;
}
void dfs(ll x,ll y,ll t)
{
a[t]=s[x][y];
if(t==6) solve();
else
{
if(x<5) dfs(x+1,y,t+1);
if(x>1) dfs(x-1,y,t+1);
if(y<5) dfs(x,y+1,t+1);
if(y>1) dfs(x,y-1,t+1);
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
for(int i=1; i<=5; i++)
for(int j=1; j<=5; j++)
cin>>s[i][j];
for(int i=1; i<=5; i++)
for(int j=1; j<=5; j++)
{
dfs(i,j,0);
}
cout<<ans;
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int s[6][6],ans;;
bool tot[100000];
int fx[5]={0,0,0,-1,1},fy[5]={0,1,-1,0,0};
void dfs(int x,int y,int vis,int cnt)
{
if(cnt==5)
{
if(!tot[vis]) ans++;
tot[vis]=true;
return;
}
for(int i=1;i<=4;i++)
{
int nx=x+fx[i],ny=y+fy[i];
if(nx<1||nx>5||ny<1||ny>5) continue;
dfs(nx,ny,vis*10+s[nx][ny],cnt+1);
}
}
int main()
{
for(int i=1;i<=5;i++)
for(int j=1;j<=5;j++)
cin>>s[i][j];
for(int i=1;i<=5;i++)
for(int j=1;j<=5;j++)
dfs(i,j,s[i][j],0);
cout<<ans;
return 0;
}
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=1e6+5;
ll s[10][10],a[10],sb[10][10][10][10][10][10];
ll ans;
void solve()
{
if(!sb[a[1]][a[2]][a[3]][a[4]][a[5]][a[6]])
sb[a[1]][a[2]][a[3]][a[4]][a[5]][a[6]]++,ans++;
}
void dfs(ll x,ll y,ll t)
{
a[t]=s[x][y];
if(t==6) solve();
else
{
if(x<5) dfs(x+1,y,t+1);
if(x>1) dfs(x-1,y,t+1);
if(y<5) dfs(x,y+1,t+1);
if(y>1) dfs(x,y-1,t+1);
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
for(int i=1; i<=5; i++)
for(int j=1; j<=5; j++)
cin>>s[i][j];
for(int i=1; i<=5; i++)
for(int j=1; j<=5; j++)
{
dfs(i,j,0);
}
cout<<ans;
return 0;
}
//细胞个数
#include<iostream>
using namespace std;
bool a[110][110];
int n,m,ans;
char c;
int dfs(int x,int y){
if(a[x][y]){
a[x][y]=false;
dfs(x-1,y);
dfs(x,y-1);
dfs(x+1,y);
dfs(x,y+1);
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>c;
if(c=='0'){
a[i][j]=false;
}else{
a[i][j]=true;
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]){
dfs(i,j);
ans++;
}
}
}
printf("%d",ans);
return 0;
}
#include <bits/stdc++.h>
using namespace std;
int n,m;
char a[101][101];
int ans;
void dfs(int x,int y)
{
if(x<1||x>n||y<1||y>m||a[x][y]=='0') return;
a[x][y]='0';
dfs(x+1,y);
dfs(x,y+1);
dfs(x-1,y);
dfs(x,y-1);
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(a[i][j]!='0'){
ans++; dfs(i,j);
}
}
}
cout<<ans;
return 0;
}
362作业
2024-03-23 10:15:17 By
wlc
评论
songchengze
```cpp
#include<bits/stdc++.h>
using namespace std;
int ans,a[11][11];
bool b[1000000];
void dfs(int x,int y,int z,int n)
{
//x和y代表位置
//z代表第几位数
//n代表六位数
if(z==7)
{
if(b[n]==0)
{
ans++;
b[n]=1;
}
return;
}
//判断是否越界
if(x+1<=5) dfs(x+1,y,z+1,n*10+a[x][y]);
if(y+1<=5) dfs(x,y+1,z+1,n*10+a[x][y]);
if(x-1>=1) dfs(x-1,y,z+1,n*10+a[x][y]);
if(y-1>=1) dfs(x,y-1,z+1,n*10+a[x][y]);
}
int main()
{
for(int i=1; i<=5; i++)
{
for(int j=1; j<=5; j++)
{
cin>>a[i][j];
}
}
for(int i=1; i<=5; i++)
{
for(int j=1; j<=5; j++)
{
//从所有地方当作开头搜索
dfs(i,j,1,0);
}
}
cout<<ans;
return 0;
}
```
- 2024-03-23 10:30:40
whc2010
#include<bits/stdc++.h>
using namespace std;
int n,m,t,b[15][15],a[15][15];
int fx,fy,ex,ey,ans;
int xt[15],yt[15];
int x1[4]= {1,-1,0,0},y_1[4]= {0,0,1,-1};
void dfs(int x,int y) {
if(x==ex&&y==ey) {
ans++;
// cout<<endl;
return;
}
for(int i=0; i<4; i++) {
int nx=x+x1[i],ny=y+y_1[i];
if(b[nx][ny]==0&&a[nx][ny]!=0) {
b[x][y]=1;
// cout<<nx<<' '<<ny<<endl;
dfs(nx,ny);
b[x][y]=0;
}
}
}
int main() {
cin>>n>>m>>t;
cin>>fx>>fy>>ex>>ey;
for(int i=1; i<=n; i++) {
for(int j=1; j<=m; j++) {
a[i][j]=1;
}
}
for(int i=1; i<=t; i++) {
cin>>xt[i]>>yt[i];
a[xt[i]][yt[i]]=0;
}
// for(int i=1;i<=n;i++){
// for(int j=1;j<=m;j++){
// cout<<a[i][j]<<' ';
// }
// cout<<endl;
// }
dfs(fx,fy);
cout<<ans;
return 0;
}
/*
4 3 3
2 1 3 3
1 1
1 4
2 3
*/
- 2024-03-23 10:47:29
发表评论
可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。