迷宫的所有路径
#include<bits/stdc++.h>
using namespace std;
void f(int,int),print();
int n,m;
int dx[]={0,1,0,-1};
int dy[]={1,0,-1,0};
char a[100][100];
bool flag=false;
struct point{int x,y;
};
point r[10000];
int lr=0;
int main()
{system("color 1");cin>>n;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>a[i][j];}}f(1,1);return 0;
}void f(int x,int y){a[x][y]='o';r[lr].x=x;r[lr].y=y;lr++;if(x==n&&y==m){print();return;}for(int i=0;i<4;i++){int tx=x+dx[i];int ty=y+dy[i];if(tx>=1&&tx<=n&&ty>=1&&ty<=m&&a[tx][ty]=='.'&&flag==false){a[tx][ty]='o';f(tx,ty);lr--;a[tx][ty]='.';}}return;
}
void print(){for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cout<<setw(3)<<a[i][j];}cout<<endl;}for(int i=0;i<lr;i++){cout<<"("<<r[i].x<<","<<r[i].y<<") ";}
}
LETTERS
#include<bits/stdc++.h>
using namespace std;
void f(int,int,int);
int n,m,ma=0;
int dx[]={0,1,0,-1};
int dy[]={1,0,-1,0};
char a[100][100];
bool flag=false,c[100];
struct point{int x,y;
};
point r[10000];
int lr=0;
int main()
{system("color 1");cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>a[i][j];}}f(1,1,1);cout<<ma;return 0;
}void f(int x,int y,int cnt){c[(int)a[x][y]]=true;ma=max(ma,cnt);for(int i=0;i<4;i++){int tx=x+dx[i];int ty=y+dy[i];if(tx>=1&&tx<=n&&ty>=1&&ty<=m&&c[(int)a[tx][ty]]==false){f(tx,ty,cnt+1);c[(int)a[tx][ty]]=false;}}return;
}
棋盘问题
#include<bits/stdc++.h>
using namespace std;
void f(int,int,int),print();
bool iif(int,int);
int n,m;
char a[100][100];
int sum=0;
int main()
{system("color 1");while(1){cin>>n>>m;if(n==-1&&m==-1) break;for(int i=0;i<n;i++){for(int j=0;j<m;j++){cin>>a[i][j];}}f(0,0,0);cout<<sum;}return 0;
}void f(int x,int y,int cnt){if(cnt==m){sum++;return;}if(x==n){return;}for(int i=0;i<n;i++){if(iif(x,i)==true&&a[x][i]=='#'){a[x][i]='o';f(x+1,i,cnt+1);a[x][i]='#';}}return;
}
bool iif(int x,int y){for(int i=0;i<n;i++){if(a[x][i]=='o'&&i!=y) return false;}for(int i=0;i<n;i++){if(a[i][y]=='o'&&i!=x) return false;}return true;
}
void print(){cout<<"------------------------------------"<<endl;for(int i=0;i<n;i++){for(int j=0;j<n;j++){cout<<a[i][j];}cout<<endl;}
}