一个c++问题 20
#include<iostream>usingnamespacestd;inta[5][5];//////////////////////////////////////...
#include <iostream>
using namespace std;
int a[5][5];
//////////////////////////////////////////////////////
void solve(int i,int j,int k)
{
a[i][j]=k;
if(k==25)
{
for(int m=0;m<5;m++)
{
for(int n=0;n<5;n++)
cout<<a[m][n]<<" ";
cout<<endl;
}
return;
}
else
{
if((i-1>0)&&(j-2>0)&&!a[i][j]) solve(i-1,j-2,k+1);
if((i-1>0)&&(j+2<5)&&!a[i][j]) solve(i-1,j+2,k+1);
if((i+1<5)&&(j-2>0)&&!a[i][j]) solve(i+1,j-2,k+1);
if((i+1<5)&&(j+2<5)&&!a[i][j]) solve(i+1,j+2,k+1);
if((i-2>0)&&(j-1>0)&&!a[i][j]) solve(i-2,j-1,k+1);
if((i-2>0)&&(j+1<5)&&!a[i][j]) solve(i-2,j+1,k+1);
if((i+2<5)&&(j-1>0)&&!a[i][j]) solve(i+2,j-1,k+1);
if((i+2<5)&&(j+1<5)&&!a[i][j]) solve(i+2,j+1,k+1);
}
a[i][j]=0;
}
/////////////////////////////////////////////
void mian()
{
for(int q=0;q<5;q++)
for(int w=0;w<5;w++)
a[q][w]=0;
int x,y;
cout<<"输入两个整数,小于5"<<endl;
while(1)
{
cin>>x>>y;
if(x>5||x<1||y>5||y<1)
{
cout<<"错误重新输入"<<endl;
continue;
}
else solve(x-1,y-1,1);
}
}
程序运行是错误提示为:Linking...
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/r16_3.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
r16_3.exe - 2 error(s), 0 warning(s)
题目要求为
编写程序求解骑士巡游问题:在n行n列的棋盘上(如n=5),假设一位骑士(按象棋中“马走日”的行走法)从初始坐标位置(x1,y1)出发,要遍访(巡游)棋盘中的每一个位置一次。请编一个程序,为骑士求解巡游“路线图”(或告诉骑士,从某位置出发时,无法遍访整个棋盘 — 问题无解)。
当n=5时,意味着要在5行5列的棋盘的25个“点”处,按骑士行走规则,依次将1至25这25个“棋子”(数码)分别摆放到棋盘上(摆满25个位置则成功,否则失败问题无解)。
例如,当n=5且初始坐标位置定为(1,1) — 即最左上角的那个点时,如下是一种巡游“路线图”。程序执行后的输出结果为:
(x1,y1)? => (1=>5, 1=>5) : 1 1
1 6 15 10 21
14 9 20 5 16
19 2 7 22 11
8 13 24 17 4
25 18 3 12 23
望高人指点!! 展开
using namespace std;
int a[5][5];
//////////////////////////////////////////////////////
void solve(int i,int j,int k)
{
a[i][j]=k;
if(k==25)
{
for(int m=0;m<5;m++)
{
for(int n=0;n<5;n++)
cout<<a[m][n]<<" ";
cout<<endl;
}
return;
}
else
{
if((i-1>0)&&(j-2>0)&&!a[i][j]) solve(i-1,j-2,k+1);
if((i-1>0)&&(j+2<5)&&!a[i][j]) solve(i-1,j+2,k+1);
if((i+1<5)&&(j-2>0)&&!a[i][j]) solve(i+1,j-2,k+1);
if((i+1<5)&&(j+2<5)&&!a[i][j]) solve(i+1,j+2,k+1);
if((i-2>0)&&(j-1>0)&&!a[i][j]) solve(i-2,j-1,k+1);
if((i-2>0)&&(j+1<5)&&!a[i][j]) solve(i-2,j+1,k+1);
if((i+2<5)&&(j-1>0)&&!a[i][j]) solve(i+2,j-1,k+1);
if((i+2<5)&&(j+1<5)&&!a[i][j]) solve(i+2,j+1,k+1);
}
a[i][j]=0;
}
/////////////////////////////////////////////
void mian()
{
for(int q=0;q<5;q++)
for(int w=0;w<5;w++)
a[q][w]=0;
int x,y;
cout<<"输入两个整数,小于5"<<endl;
while(1)
{
cin>>x>>y;
if(x>5||x<1||y>5||y<1)
{
cout<<"错误重新输入"<<endl;
continue;
}
else solve(x-1,y-1,1);
}
}
程序运行是错误提示为:Linking...
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/r16_3.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
r16_3.exe - 2 error(s), 0 warning(s)
题目要求为
编写程序求解骑士巡游问题:在n行n列的棋盘上(如n=5),假设一位骑士(按象棋中“马走日”的行走法)从初始坐标位置(x1,y1)出发,要遍访(巡游)棋盘中的每一个位置一次。请编一个程序,为骑士求解巡游“路线图”(或告诉骑士,从某位置出发时,无法遍访整个棋盘 — 问题无解)。
当n=5时,意味着要在5行5列的棋盘的25个“点”处,按骑士行走规则,依次将1至25这25个“棋子”(数码)分别摆放到棋盘上(摆满25个位置则成功,否则失败问题无解)。
例如,当n=5且初始坐标位置定为(1,1) — 即最左上角的那个点时,如下是一种巡游“路线图”。程序执行后的输出结果为:
(x1,y1)? => (1=>5, 1=>5) : 1 1
1 6 15 10 21
14 9 20 5 16
19 2 7 22 11
8 13 24 17 4
25 18 3 12 23
望高人指点!! 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询