今天要疯了,数独的题成了一块心病,谨以此博客纪念一下自认为完美根本不可能超时的代码。。。。
没想到自己可以写九宫格了。。
其实我也不知道为什么非要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;
}
虽然没过,但是这个代码我感觉很亲切。小时后一直玩九宫格,虽然玩多了也会无聊。但是童年的记忆。