362作业

2024-03-23 10:15:17 By Cinque Terre wlc
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;
}

评论

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; } ```
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 */

发表评论

可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。