2017.8.3------数独

今天要疯了,数独的题成了一块心病,谨以此博客纪念一下自认为完美根本不可能超时的代码。。。。

没想到自己可以写九宫格了。。

其实我也不知道为什么非要AC,数独一直超时,我就不管了吧,折腾了一下午,我的代码的基础还是很差的,东西不会用,scanf还是看了cin超时后才用的,好无奈,直到超时也解决不了。还有输入的时候,我居然用int也是醉了。。。

上午没多大印象,风平浪静总是给人的印象不深,下练习赛。。。。

也是,第一道题多简单啊,我一直想复杂了,敲了大半小时觉得不对,再仔细想想。。。。。想骂人了。

我觉得做提前不能心急,我觉得心态很重要,先认真审题,有个清晰的思路是重点,我敲代码喜欢边敲边想,有不对的回头再补上,然后就乱。。

一天一A道题。。但总不能看A题的个数决定人的收获吧。

今天已经是第三天了,大佬们和我这样的小佬差距拉开了那么一点点,我有时感觉自己就像打不死的蟑螂,对是打不死的。

基础薄弱,有时自己想表达的意思都敲不出来,做题不够,知识点欠,脑洞也没开,就像九宫格的这道,开始我的思路和常规的玩九宫格时的思路一样,然后就凌乱了,大胆的搜就是了,一行行的搜,就是多了步判断而已。

看了看第九题扑克牌的题,小晕。

今天练习赛第二题多简单。现在也不知道哪错了。

第五题不错,待整整。对自己要求太松了太松了。

累的时候会对自己说,我还没有说累的资格,确实。

革命尚未成功,仍需加油啊。

九宫格代码如下:(超时)

#include<iostream>
#include<stdio.h>
using namespace std;
int map[9][9];

int panduan(int x,int y,int z)
{
    for(int j=0;j<9;j++)
    {
        if(map[x][j]==z&&j!=y)
        {
            return 0;
        }
        if(map[j][y]==z&&j!=x)
        {
            return 0;
        }
    }
    int dx=x/3*3;
    int dy=y/3*3;
    for(int i=dx;i<dx+3;i++)
    {
        for(int j=dy;j<dy+3;j++)
        {
            if(map[i][j]==z&&i!=x&&j!=y)
            return 0;
        }
    }
    return 1;

}
void dfs(int k)
{
    if(k==81)
    {
        for(int i=0;i<9;i++)
        {
            for(int j=0;j<9;j++)
            {
                 printf("%d",map[i][j]);
            }
            cout<<endl;
        }
    return ;
    }

    int x=k/9;
    int y=k%9;
    if(map[x][y]==0)
    {
        for(int i=1;i<=9;i++)
        {
            map[x][y]=i;
            if(panduan(x,y,map[x][y])==1)
            dfs(k+1);
        }
        map[x][y]=0;
    }
    else
    dfs(k+1);
}
int main()
{
    int tt;

    string c;
    cin>>tt;
    c.resize(9);
    while(tt--)
    {
        for(int i=0;i<9;i++)
        {
            scanf("%s",&c[0]);
            for(int j=0;j<9;j++)
            {
                //scanf("%s",&c[0]);
                map[i][j]=c[j]-'0';
            }
        }
        dfs(0);
    }
    return 0;
}

 

虽然没过,但是这个代码我感觉很亲切。小时后一直玩九宫格,虽然玩多了也会无聊。但是童年的记忆。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值