您的位置:首页 > 其它

poj3050 穷竭搜索 <挑战程序设计竞赛>

2018-01-31 11:08 239 查看
2018-1-31

一开始题目没有读懂,没有看到样例中的唯一的2。。。

这题用STL里的set求解极为方便,因为set里的元素是不相同的,最后只要输出它的size即可

#include<iostream>
#include<set>
using namespace std;

const int N = 1000, M = 5;
int x[M+1][M+1];
int dx[4]={-1,1,0,0},dy[4]={0,0,-1,1};
set<int>ss;

bool isvalid(int i,int j){
if (i<1||i>M||j<1||j>M) return false;
return true;
}

void dfs(int s,int step,int i,int j){
if (step>M+1) return;
if (step==M+1){
ss.insert(s);
}
for (int k=0;k<4;k++){
int nx=i+dx[k],ny=j+dy[k];
if (isvalid(nx,ny)){
dfs(s*10+x[nx][ny],step+1,nx,ny);
}
}
}

int main(){
for (int i=1;i<=M;i++){
for (int j=1;j<=M;j++){
cin>>x[i][j];
}
}
for (int i=1;i<=M;i++){
for (int j=1;j<=M;j++){
dfs(0,0,i,j);
}
}
cout<<ss.size()<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  poj 搜索