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 |
以为数据会很大,吓的我一直不敢提交,结果32ms,汗~~~#include<iostream> using namespace std; int direction[8][2]={-2,-1,-2,1,-1,-2,-1,2,1,-2,1,2,2,-1,2,1}; int map[26][26]; int m,n; int steps,flag,times; int position[700]; int init() { int i,j; for(i=0;i<m;i++) for(j=0;j<n;j++) map[i][j]=0; steps=-1; flag=0; } int isin(int i,int j) { return (i>=0&&i<m&&j>=0&&j<n); } void run(int i,int j) { int k,newx,newy; if(flag) return; position[++steps]=i*26+j; map[i][j]=1; if(steps==m*n-1) { flag=1; for(k=0;k<=m*n-1;k++) cout<<(char)(position[k]/26+'A')<<position[k]%26+1; cout<<endl; return; } for(k=0;k<8;k++) { newx=i+direction[k][0]; newy=j+direction[k][1]; if(isin(newx,newy)&&map[newx][newy]==0) { run(newx,newy); } } steps--; map[i][j]=0; } int main() { int i,j,k; cin>>times; for(k=1;k<=times;k++) { cin>>n>>m; init(); cout<<"Scenario #"<<k<<":"<<endl; for(i=0;i<(m+1)/2;i++) { for(j=0;j<=i;j++) { if(flag) break; init(); run(i,j); } if(flag) break; } if(!flag) cout<<"impossible"<<endl; cout<<endl; } return 1; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator