学习记录8

上午

照旧听英语四级听力,背单词。

然后看了两章《大话数据结构》。

还写了一下八皇后,没写出。

晚上

继续写八皇后,终于已经能够得出6*6的答案了,还没搞我这为什么数高上去答案就不对了。明明6的都可以得出来了,已经很接近了。大概,还是回溯的地方出了问题。

#include <iostream>

#include <cmath>

#include <memory.h>

#include <algorithm>

using namespace std;
int mark[20][20]={0},ans[20][20]={0},n,k;
int path[8][2]={{1,1},{1,-1},{-1,-1},{0,1},{-1,1},{0,-1},{1,0},{-1,0}},m,l;
void dfs(int c,int cnt)
{
    if(cnt==n)
    {
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
                if(mark[i][j]==22)
                    ans[m][l++]=j;
            m++;
            l=0;
        return;
    }
    for(int i=1;i<=n;i++)
    {
        if(mark[c][i]==0)
         {
             mark[c][i]=22;
            for(int j=0;j<8;j++)
            {
                int x=c+path[j][0];
                int y=i+path[j][1];
                while(x>=1&&x<=n&&y>=1&&y<=n)
                {
                    if(mark[x][y]==0)
                        mark[x][y]=c;
                    x=x+path[j][0];
                    y=y+path[j][1];
                }
            }

         }
         else continue;
         dfs(c+1,cnt+1);
         mark[c][i]=0;
        for(int j=0;j<8;j++)
            {
                int x=c+path[j][0];
                int y=i+path[j][1];
                while(x>=1&&x<=n&&y>=1&&y<=n)
                {
                    if(mark[x][y]==c)
                        mark[x][y]=0;
                    x=x+path[j][0];
                    y=y+path[j][1];
                }
            }
    }
}
int main()
{
    cin >>n;
    dfs(1,0);
    for(int i=0;i<3;i++)
    {
       for(int j=0;j<n;j++)
            cout <<ans[i][j]<<" ";
       cout <<endl;
    }
    cout <<m;
    cout <<endl;
    for(int i=0;i<m;i++)
            {
            for(int j=0;j<n;j++)
                cout <<ans[i][j]<<" ";
            cout <<endl;
            }

}

明天接着写。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值