dfs模板:
#include <stdio.h>
int a[10],book[10]={0},n;
void dfs(int step)
{
int i;
if(step==n+1)
{
for(i=1;i<=n;i++)
printf("%d “,a[i]);
putchar(’\n’);
return;
}
else
{
for(i=1;i<=n;i++)
if(book[i]==0)
{
a[step]=i;
book[i]=1;
dfs(step+1);
book[i]=0;
}
}
return;
}
int main()
{
scanf(”%d",&n);
dfs(1);
return 0;
}
bfs模板:
#include <bits/stdc++.h>
using namespace std;
struct queu{
int x;
int y;
};
int aa[32][32],head=1,tail=1,tx,ty;
int turn[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
struct queu que[1030];
int main()
{
int n,i,j,k;
scanf("%d",&n);
for(i=0;i<=n+1;i++)
for(j=0;j<=n+1;j++)
aa[i][j]=2;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&aa[i][j]);
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
if(aa[i][j]==1)
break;
if(aa[i][j]==1)
break;
}
que[head].x=i+1;
que[head].y=j+1;
aa[i+1][j+1]=2;
tail++;
while(head<tail)
{
for(k=0;k<=3;k++)
{
tx=que[head].x+turn[k][0];
ty=que[head].y+turn[k][1];
if(tx>n||tx<1||ty>n||ty<1)
continue;
if(aa[tx][ty]==0)
{
aa[tx][ty]=2;
que[tail].x=tx;
que[tail].y=ty;
tail++;
}
}
head++;
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
printf("%d ",aa[i][j]);
putchar(’\n’);
}
return 0;
}