| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1037 人关注过本帖
标题:马踏棋盘
只看楼主 加入收藏
ershiyi
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2006-3-15
收藏
 问题点数:0 回复次数:6 
马踏棋盘

不知道怎么修改,有些错误的信息看不懂。帮帮忙,看一下~~~

#include"stdio.h"
#define int L[8][8]={0},int i=2,int j=3
void main()
{ int L[i][j]=1;
Trial(int L,int i,int j,1);
}
void Trial(int L[][],int i,int j,int step)
{ if(step>63)
{ for(i=0;j<=63;i++)
for(j=0;j<=63;j++)
{printf("% d",L[i][j]);
printf("\n");
}
}
if(0<=i-2<=7&0<=j+1<=7&L[i-2][j+1]==0)
{ L[i-2][j+1]=step+1;
Trial(L,i-2,j+1,step+1);
}
if(0<=i-1<=7&0<=j+2<=7&L[i-1][j+2]==0)
{ L[i-1][j+2]=step+1;
Trial(L,i-1,j+2,step+1);
}
if(0<=i-0<=7&0<=j+3<=7&L[i-0][j+3]==0)
{ L[i-0][j+3]=step+1;
Trial(L,i-0,j+3,step+1);
}
if(0<=i+1<=7&0<=j+4<=7&L[i+1][j+4]==0)
{ L[i+1][j+4]=step+1;
Trial(L,i+1,j+4,step+1);
}
if(0<=i+2<=7&0<=j+5<=7&L[i+2][j+5]==0)
{ L[i+2][j+5]=step+1;
Trial(L,i+2,j+5,step+1);
}
if(0<=i+3<=7&0<=j+6<=7&L[i+3][j+6]==0)
{ L[i+3][j+6]=step+1;
Trial(L,i+3,j+6,step+1);
}
if(0<=i+4<=7&0<=j+7<=7&L[i+4][j+7]==0)
{ L[i+4][j+7]=step+1;
Trial(L,i+4,j+7,step+1);
}
if(0<=i+5<=7&0<=j+8<=7&L[i+5][j+8]==0)
{ L[i+5][j+8]=step+1;
Trial(L,i+5,j+8,step+1);
}
}

搜索更多相关主题的帖子: 棋盘 step 
2006-11-09 21:56
ershiyi
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2006-3-15
收藏
得分:0 

怎么没人呢?
看看错在哪里?
谢了!


2006-11-10 16:35
ershiyi
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2006-3-15
收藏
得分:0 

大哥大姐们~~~~~~~~~~~~
教教小弟啊


2006-11-10 21:51
perfect
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:81
专家分:0
注 册:2006-11-19
收藏
得分:0 
第二行的#define是怎么回事啊
if中的判断有问题 不能像0<=i-2<=7这样连续判断吧
与应该为&&,这样可以避免出错

没有判断周围都不是0的情况
程序的思路好像有点不对,应该写一些注释啊

片言可以明百意 坐驰可以役万里
2006-11-19 11:45
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

判断教为复杂.

看看皇后问题吧.楼主自己参考一下.

#define N 20

int x[N] ; //当前解
int sum = 0 ; //可行解的数量
int n=8 ; //规模
bool Place( int k )
{
int i;
for( i = 1 ; i < k ; i++ )
{
if(abs(k-i)==abs(x[k]-x[i])||x[i]==x[k])
{
return false;
}
}
return true;
}

void Backtrack( int t )
{
if( t > n)
{
sum++;
for(int i=1;i<=n;i++)
{
/* for(int j=1;j<=n;j++)
{
if(j==x[i])
{
printf("*");
}
else
{
printf(" ");
}
}
printf("\n");
*/
printf("%-3d%-3d\n",i,x[i]);
}
printf("\n");
}
else
{
for( int i = 1 ; i<= n ; i++ )
{
x[t] = i ;
if( Place( t )==true )
{
Backtrack( t + 1 ) ;
}
}
}
}


倚天照海花无数,流水高山心自知。
2006-11-21 15:28
mao4995641
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-1-2
收藏
得分:0 

2007-01-02 09:19
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 

先从最简单的练起,
基本上都是语法上的错误,
推荐你去C版练,我自己也是从那里成长的.


对不礼貌的女生收钱......
2007-01-02 14:46
快速回复:马踏棋盘
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012461 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved