| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 486 人关注过本帖
标题:八皇后 C程序 递归算法 看不懂
只看楼主 加入收藏
panshuhui
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-12-6
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
八皇后 C程序 递归算法 看不懂
八皇后问题,小弟菜鸟一个,看不懂,求高手
#include <stdio.h>   
#define ROW 8   
#define COL 8   
#define NUM 8   
int a[ROW][COL];   
int k = 0;   
int put( int n)   
{   int i, j;   if( n > NUM)   
{  
 printf( "----------%06d----------\n", ++k);   
for( i = 0; i < ROW; i ++)   
{  
for( j = 0; j < COL; j ++)   
printf( "%c ", a[i][j] == 1 ? 'o' : 'x');   
printf( "\n");   }   
printf( "--------------------------\n\n");   return -1;   }   
// 尝试行中的每个位置   
for( j = 0; j < COL; j ++)   
{   
int flag = 0;   
for( i = 0; i < n - 1; i ++)   
{   
// 是否同列  
 if( a[i][j] == 1)   
{   
flag = 1;   
break;   
}   
// 是否左斜角   
if( j - ( n - 1 - i) >= 0 && a[i][j - ( n - 1 - i)] == 1)   
{   
flag = 1;   
break;   
}   
// 是否右斜角   
if( j + ( n - 1 - i) < COL && a[i][j + ( n - 1 - i)] == 1)   
{   
flag = 1;   
break;  
}   
}   
if( flag == 0)   
{   
a[n-1][j] = 1;   if( put( n + 1) == -1)   
{   
a[n-1][j] = 0;   
}else   
return 0;   
}   
}   
return -1;   
}   
int main()   
{   
put( 1);   
return 0;   
}
搜索更多相关主题的帖子: 皇后 include return 
2012-12-07 16:20
qq872551969
Rank: 9Rank: 9Rank: 9
等 级:禁止访问
威 望:1
帖 子:241
专家分:1377
注 册:2012-7-13
收藏
得分:20 
哪句看不懂呢?

编程交流请加群:【234181324】,一起学习,一起进步,新建的群,主打C语言和JAVA等程序设计,等待高手们的入驻,无论你是高手也好,新手也好,在这里都是平等的,欢迎你们的加入~!【234181324】
2012-12-07 16:23
panshuhui
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-12-6
收藏
得分:0 
#include <stdio.h>   
 #define ROW 8   
 #define COL 8   
 #define NUM 8   
 int a[ROW][COL];   
 int k = 0;   
 int put( int n)   
 {   int i, j;   if( n > NUM)   
 {  
 printf( "----------%06d----------\n", ++k);   
 for( i = 0; i < ROW; i ++)   
 {  
 for( j = 0; j < COL; j ++)   
 printf( "%c ", a[i][j] == 1 ? 'o' : 'x');   
 printf( "\n");   }   
 printf( "--------------------------\n\n");   return -1;   }



。int main()   
 {   
 put( 1);   
 return 0;   
 }
主要是这两部分不懂,如果能够整个程序注释一下就更好了,多谢




2012-12-07 16:27
qq872551969
Rank: 9Rank: 9Rank: 9
等 级:禁止访问
威 望:1
帖 子:241
专家分:1377
注 册:2012-7-13
收藏
得分:0 
就是如果第一行满足了条件 就执行下面那一句,如果不满足继续执行,行数到了一定条件下,就执行完毕,大概就这个意思

编程交流请加群:【234181324】,一起学习,一起进步,新建的群,主打C语言和JAVA等程序设计,等待高手们的入驻,无论你是高手也好,新手也好,在这里都是平等的,欢迎你们的加入~!【234181324】
2012-12-07 19:01
panshuhui
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-12-6
收藏
得分:0 
第十六行的return -1可以用return 0 吗?为什么用-1?
倒数第7行的return -1可以用return 0 吗?为什么用-1?
倒数第3行的put( 1)中为什么用1?
2012-12-08 12:09
快速回复:八皇后 C程序 递归算法 看不懂
数据加载中...
 
   



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

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