| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:超时求助。。。In Reply To:超时求助。。。 Posted by:nangua1995 at 2017-03-03 23:22:49 > #include <iostream>
> using namespace std;
> #define size 100
> int data[size][size]={0};//没走的格子是0,走完变成1
> int p,q;
> bool findpath=false;
> int DX[8]={-2,-2,-1,-1,+1,+1,+2,+2};
> int DY[8]={-1,+1,-2,+2,-2,+2,-1,+1};
> int path[2][size]={};//存储路径
> int step=1;
> int num=1;
> void print(){
> printf("A1");
> for(int i=1;i<step;i++){
> //printf("%c",'A'+path[1][size]);
>
> printf("%c",path[0][i]+'A'-1);
> printf("%d",path[1][i]);
> }
> printf("\n");
> }
> bool exist0(){
> bool ret =false;
> for(int i=1;i<=p;i++){
> for(int j=1;j<=q;j++)
> {
> if(data[j][i]==0)
> ret = true;
> }
> }
> return ret;
> }
> void dfs(int x,int y)
> {
> //if(x==q&&y==p){
> // findpath = true;
> // print();
> // return;
> //}
> if(!exist0()&&x==q&&y==p){
> findpath = true;
> print();
> return;
>
> }
> data[1][1] = 1;
> for(int i=0;i<=8;i++){
> int NX = x + DX[i];
> int NY = y + DY[i];
> if(NX<=q&&NY<=p&&NX>0&&NY>0&&data[NX][NY]==0){
> int tmp = data[NX][NY];
> data[NX][NY] = 1;
> path[0][step] = NX;
> path[1][step] = NY;
> step++;
> dfs(NX,NY);
>
> data[NX][NY] = tmp;
> step--;
> path[0][step] = 0;
> path[1][step] = 0;
>
> }
> }
> }
> int main(){
> int n;
> cin>>n;
> path[0][0]=1;//初始位置
> path[1][0]=1;
> data[1][1]=1;
> while(n--){
>
> cin>>p;
> cin>>q;
> printf("Scenario #%d:\n",num);
> num++;
> dfs(1,1);
>
> if(!findpath){
> printf("impossible\n");}
> findpath = false;
> step = 1;
> for(int i=1;i<size;i++)
> for(int j=0;j<size;j++)
> {
> data[i][j] = 0;
> }
> for(int i=0;i<size;i++){
> path[0][i] = 0;
> path[1][i] = 0;
> }
> }
>
> return 0;
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator