| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1384 人关注过本帖
标题:凌晨用自己理解的回溯法写的一道关于四皇后的问题
取消只看楼主 加入收藏
Redeyes
Rank: 4
来 自:中国
等 级:业余侠客
威 望:1
帖 子:301
专家分:292
注 册:2015-5-13
结帖率:86%
收藏
已结贴  问题点数:20 回复次数:5 
凌晨用自己理解的回溯法写的一道关于四皇后的问题
程序运行正确,但没有输出结果,是不是数据溢出了的问题,望各位大神指点一下^_^
程序代码:
#include<stdio.h>
int count=0;
int H[4][4];
int pai(int i,int j)
{
    int s,t;
    for(s=i,t=0;t<0;t++) //判断行 
    if(H[s][t]==1&&t!=j)
    return 0;
    
    for(s=0,t=j;j<0;j++) //判断列 
    if(H[s][t]==1&&s!=i)
    return 0;
    
    for(s=i-1,t=j-1;s>=0,t>=0;s--,t--) //判断左上方 
    if(H[s][t]==1)
    return 0;
    
    for(s=i-1,t=j+1;s>=0,j<4;s--,t++) //判断右上方 
    if(H[s][t]==1)
    return 0;
    
    for(s=i+1,t=j-1;s<4,t>=0;s++,t--) //判断左下方 
    if(H[s][t]==1)
    return 0;
    
    for(s=i+1,t=j+1;s<4,t<4;s++,t++) //判断右下方 
    if(H[s][t]==1)
    return 0;
    
    return 1;  
}
void huang(int j)
{
    if(j==4)
        count++;
    for(int i=0;i<4;i++){
        if(pai(i,j)){
            H[i][j]==1; //插入皇后 
            huang(j+1); //继续搜索下一个 
            H[i][j]==0; 
        }
    }
}
int main()
{
    int i,j;
    for(i=0;i<4;i++)
        for(j=0;j<4;j++)
            H[i][j]=0; 
    huang(0); //还原 
    printf("Answer:",count);
    getchar();
}
搜索更多相关主题的帖子: color 
2016-03-15 02:50
Redeyes
Rank: 4
来 自:中国
等 级:业余侠客
威 望:1
帖 子:301
专家分:292
注 册:2015-5-13
收藏
得分:0 
回复 2楼 grmmylbs
我用dev-c++写的,编译时没有警告。只有这个:
图片附件: 游客没有浏览图片的权限,请 登录注册

做一名健壮的技术青年,如果未来无法用代码去改变世界,还可以考虑去搬砖。
2016-03-16 09:33
Redeyes
Rank: 4
来 自:中国
等 级:业余侠客
威 望:1
帖 子:301
专家分:292
注 册:2015-5-13
收藏
得分:0 
回复 3楼 wmf2014
我也是初学回溯,有许多不懂的地方。 核心算法是这个
图片附件: 游客没有浏览图片的权限,请 登录注册
  满足条件就插入皇后,不满足就还原,继续寻找下一个...这样就实现了回溯

做一名健壮的技术青年,如果未来无法用代码去改变世界,还可以考虑去搬砖。
2016-03-16 09:47
Redeyes
Rank: 4
来 自:中国
等 级:业余侠客
威 望:1
帖 子:301
专家分:292
注 册:2015-5-13
收藏
得分:0 
回复 5楼 grmmylbs
好的,谢谢你了!我改后再试试

做一名健壮的技术青年,如果未来无法用代码去改变世界,还可以考虑去搬砖。
2016-03-16 09:48
Redeyes
Rank: 4
来 自:中国
等 级:业余侠客
威 望:1
帖 子:301
专家分:292
注 册:2015-5-13
收藏
得分:0 
回复 8楼 wmf2014
这样理解也可以。不过我觉得回溯就是个循环,不过比较高级了点,带判断的功能。比如走迷宫,四面八方都是出路,这条路不通,就换下一个。其实这个皇后问题我搞了好几天,算法思想框架都能理解,但就是换个类似的题,或者我自己去编写的话,就有许多错误,可能是我练的太少了吧。版主您有什么好的建议吗?

做一名健壮的技术青年,如果未来无法用代码去改变世界,还可以考虑去搬砖。
2016-03-22 02:16
Redeyes
Rank: 4
来 自:中国
等 级:业余侠客
威 望:1
帖 子:301
专家分:292
注 册:2015-5-13
收藏
得分:0 
回复 10楼 luckhide
那简单的理解就是顺藤摸瓜,从最开始的小问题一直找到后面最根本的问题,等把最根本的问题找出来了,也就相当于把所有情况都遍历搜索了一遍,这个时候也找到了该问题的最优解了,可以这样理解吗?

做一名健壮的技术青年,如果未来无法用代码去改变世界,还可以考虑去搬砖。
2016-03-23 01:28
快速回复:凌晨用自己理解的回溯法写的一道关于四皇后的问题
数据加载中...
 
   



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

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