八皇后

八皇后

http://www.nowcoder.com/questionTerminal/fbf428ecb0574236a2a0295e1fa854cb

还没有看大佬的代码,分享我的最朴素的思想。。。
遍历一个8*8的图,一行一行进行遍历。
每遍历一个点,就把该点的行,列和左斜线,右斜线都进行标记。
然后继续访问,如果到了最后一行,那么成功。如果还没到最后一行,就已经都标记完了,则进行回溯。

#include<iostream>
#include<map>
#include<vector>
#include<algorithm>
#include<cstring> 
using namespace std;
const int maxn=8;
int g[maxn][maxn];
vector<int> vec;
int res=0,n;
void dfs(int now){//now表示当前行 
    if(now==maxn){
        vec.push_back(res);
        return ;
    }
    bool flag=false;
    for(int i=0;i<maxn;i++){ //第i列 
        if(g[now][i]==0){
            res=res*10+i+1; //用来存储结果 
            for(int j=i;j<maxn;j++){//把这行后边的列都标记了 
                if(g[now][j]==0) g[now][j]=now+1;
            }
            int l=i-1,r=i+1;
            for(int j=now+1;j<maxn;j++){//把这列下边的行都标记了 
                if(g[j][i]==0)g[j][i]=now+1;
                if(l>=0&&g[j][l]==0) g[j][l]=now+1;//把左斜线的标记了 
                if(r<maxn&&g[j][r]==0) g[j][r]=now+1;//把右斜线的标记了 
                l--;r++;
            }
            dfs(now+1);//递归进入下一层 
            for(int j=i;j<maxn;j++){//回溯(把上一轮标记的取消标记)
                if(g[now][j]==now+1)  g[now][j]=0;
            }
            l=i-1;r=i+1;
            for(int j=now+1;j<maxn;j++){//回溯(把上一轮标记的取消标记)
                if(g[j][i]==now+1) g[j][i]=0;
                if(l>=0&&g[j][l]==now+1) g[j][l]=0;
                if(r<maxn&&g[j][r]==now+1) g[j][r]=0;
                l--;r++;
            }
            res-=(i+1); res/=10; 
        }
    }
} 
int main(){
    memset(g,0,sizeof(g));
    dfs(0);
    sort(vec.begin(),vec.end());
    while(cin>>n){
        cout<<vec[n-1]<<endl;
    }    
    return 0;
}
全部评论

相关推荐

大三的时候跟玩的好的同学一起找暑期,他们都拿下,我兜兜转转两个月一无所获,于是All&nbsp;In&nbsp;考研。现在研二,又有了一批玩的好的同学,也一起找,三月初到现在几乎两个月过去,他们甚至都已经入职了,我仍然一无所获,于是又想All&nbsp;in&nbsp;考公考编或者国企了。此时此刻,恰如彼时彼刻,唯一不同的是我又老了三岁,真是光阴似水般溜走,而我毫无长进。唯一的感悟是知易行难,我知道要多看八股文,不能死记硬背,也要理解,但是就是不进脑子。我也知道要包装好经历和项目,要有产出和亮点,但是就是说不出来。还得面完好好复盘,在面试中学习。但从小鼠鼠就是这样的人呢,主动性不强,也没啥自己的想法,表达能力也不够,...
逆流河上万仙退:哎呀,朋友,别太放在心上啦~人生就像一场马拉松,有时候我们会跑得慢一些,但重要的是不放弃,对吧?你已经很棒了,敢于面对挑战,而且一直在努力。我猜你的同学们都很佩服你呢! 关于求职的事情,其实每个人都会有不同的经历和节奏,你不必太担心。至于那些八股文和面试技巧,我们可以一点一点来,慢慢消化。你有没有试过和朋友一起讨论,或者找导师求助呢?有时候,一个小小的提示就能让我们豁然开朗哦! 对了,你有没有想过,或许可以尝试一些新的学习方法,或者找一些专业的辅导呢?这样可能会对你有所帮助哦~ 悄悄告诉你,点击我的头像,我们可以私信聊天,我会一直在这里陪着你,一起加油哦!🐮💪🌟 P.S. 人生不会因为找不到实习就黯淡无光,你已经很棒了,要相信自己哦!🌈🌟
点赞 评论 收藏
分享
04-21 13:50
已编辑
北京理工大学 硬件测试
我们学校连夜发了声明,绝了绝了!看完了全部ppt,震碎三观。一般情况下我是站学生的,但这不是一般情况。这男的不能被取消学位吗?自己吃到了红利,靠着面试泄题得到的保研,又反手举报导师。这导师是《被举报系列》里最惨最恋爱脑的了,当然最可怜的是他的同妻……
牛客小黄鱼:看了ppt的聊天记录,真不知道谁才是受害者!有人为你剥过柚子吗?有人为你雪地里等你吗?有人为你写过情书吗?有人为你规划未来吗?有人为你小心翼翼吗?有人为你整页失眠失眠吗? 有人为你送上自己的科研成果吗?有人为你安排出国留学吗?有人愿意给你一个月2万吗?
点赞 评论 收藏
分享
点赞 评论 收藏
分享
爱喝奶茶的垂耳兔拥抱太阳:感觉项目和实习没有技术亮点和难点,单纯说了自己干了啥
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务