#include<vector>
#include<iostream>
using namespace std;
int main(int argc, char* argv[])
{
vector <int> a(10,0) ;
vector<vector<int> > b(10,a);
for(int i=0;i<10;++i)
{ for(int j=0;j<10;++j)
cout<<b[i][j]<<" ";
cout<<endl; }
for(int i=0;i<10;++i)
for(int j=0;j<10;++j)
{ b[0][j]=1;b[j][0]=1;
b[9][j]=1;b[j][9]=1; }
b[5][3]=1;b[6][3]=1;b[2][4]=1;b[3][4]=1;b[4][4]=1;
b[4][5]=1;b[2][6]=1;b[6][6]=1;b[2][7]=1;b[3][7]=1;
b[4][7]=1;b[6][7]=1;b[7][7]=1;b[1][8]=1;b[3][1]=1;
b[7][1]=1;b[3][2]=1;b[7][2]=1;b[1][1]=3;b[8][8]=3;
cout<<endl;
for(int i=0;i<10;++i)
{ for(int j=0;j<10;++j)
cout<<b[i][j]<<" ";
cout<<endl; }
vector<int> vi;
vector<int> vj;
int i=1,j=1;
for(;i<=8,j<=8;)
{ if(b[i][j+1]==3) break;
if(b[i][j+1]==0) { b[i][j+1]=2; vi.push_back(i);vj.push_back(j+1);
i=vi.back() ;j=vj.back() ;
continue; }
else if (b[i+1][j]==3) break;
else if (b[i+1][j]==0) { b[i+1][j]=2; vi.push_back(i+1);vj.push_back(j);
i=vi.back() ;j=vj.back() ;
continue; }
else if (b[i-1][j]==3) break;
else if (b[i-1][j]==0) { b[i-1][j]=2; vi.push_back(i-1);vj.push_back(j);
i=vi.back() ;j=vj.back() ;
continue; }
else { vi.pop_back() ;vj.pop_back() ;
i=vi.back() ;j=vj.back() ; }
}
cout<<endl;
// for(int i=0;i<vi.size() ;++i)
// for(int j=0;j<vj.size() ;++j)
// b[vi[i]][vj[j]]=6;
for(int i=0;i<10;++i)
{ for(int j=0;j<10;++j)
cout<<b[i][j]<<" ";
cout<<endl; }
}
以上程序有点小问题的!!
不知道有没有别的更好的算法??