24小时热门版块排行榜    

查看: 942  |  回复: 7

文俊点点

木虫 (著名写手)


[交流] 【讨论】四皇后回溯遍历

自己写的四皇后回溯遍历问题,即在4*4的方格上放置四个皇后,任意两个不能同行同列,及在对角线的位置上。感觉没问题  但没有输出,好像是死循环·········

求助~~~~~~~~~~~~
#include
#include
void main(){
int b[5];
int i=2,j=1;
b[1]=1;
while(b[1]<=4){printf("*";
        for(int k=1;k<5;k++){
                int flag=0;
                for(int m=1;m<=j;m++){
                        if(k==b[m]){flag=1;break;}       
                        if(fabs(b[m]-k)==fabs(m-i)){flag=1;break;}       
                }
                if(flag==1)continue;
                j++;b[j]=k;i++;break;
        }

        if(j<4&&b[j]!=4){
                        while(b[j]<4){
                                int flag1=0;
                                b[j]++;
           for(int m=1;m                         if(b[j]==b[m]){flag1=1;break;}       
                        if(fabs(b[m]-b[j])==fabs(m-j)){flag1=1;break;}       
                }
                   if(flag1==0) break;
                        }               
        }

                if(j<4&&b[j]==4){
                        while(j>=1){
                                int flag2=0;
                        j--;i--;
                        if(b[j]==4){
                        j--;i--;}
                        b[j]++;
        for(int m=1;m                         if(b[j]==b[m]){flag2=1;break;}       
                        if(fabs(b[m]-b[j])==fabs(m-j)){flag2=1;break;}       
                }
           if(flag2==0) break;
                        }
               
                }


        if(j==4){
                for(int m=1;m<5;m++)
                printf("%d  ",b[m]);
                if(b[1]<4){j=1;b[j]++;i=2;}
        }

        }
}

[ Last edited by mze04532 on 2011-4-16 at 14:10 ]
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

» 抢金币啦!回帖就可以得到:

查看全部散金贴

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

文俊点点

木虫 (著名写手)


`````````````太伤心了  没人理我···············
2楼2011-04-22 21:19:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
文俊点点(金币+5): 说的也是啊··········不过已解决了················ 2011-04-23 13:37:52
引用回帖:
Originally posted by 文俊点点 at 2011-04-16 12:18:32:
自己写的四皇后回溯遍历问题,即在4*4的方格上放置四个皇后,任意两个不能同行同列,及在对角线的位置上。感觉没问题  但没有输出,好像是死循环·········

求助~~~~~~~~~~~~
#include<stdio.h> ...

希望尽量详细介绍算法的出发点、设计思想、算法输入输出定义,以及应用场合吧。
否则没头没脑的,让大家怎么帮你?
3楼2011-04-22 21:41:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

liujie8882

铁虫 (正式写手)


文俊点点(金币+1): ````````````````````````` 2011-04-24 12:03:15
祝一切顺利……
4楼2011-04-22 21:53:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sunlin313

禁虫 (初入文坛)

文俊点点(金币+4): 剩下4个金币都给你吧············· 2011-05-19 18:13:48
本帖内容被屏蔽

5楼2011-05-11 19:19:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

beyond9522

银虫 (小有名气)



小木虫(金币+0.5):给个红包,谢谢回帖
确实看不出发程序要干什么?
6楼2011-08-27 22:47:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

aarondeng

金虫 (小有名气)



小木虫(金币+0.5):给个红包,谢谢回帖
while(b[1]<=4)
这里的b[1]是不是错了?应该是b?
没认真看,如果是进入死循环,肯定是在这些判断的地方啊。
7楼2011-08-28 23:16:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

文俊点点

木虫 (著名写手)


引用回帖:
7楼: Originally posted by aarondeng at 2011-08-28 23:16:09:
while(b[1]<=4)
这里的b[1]是不是错了?应该是b?
没认真看,如果是进入死循环,肯定是在这些判断的地方啊。

已经解决了········这是很久以前的问题了··········
8楼2011-08-30 13:01:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 文俊点点 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见