论坛风格切换切换到宽版
  • 3272阅读
  • 13回复

为啥他们2分钟就可以完成9宫数独啊! [复制链接]

上一主题 下一主题
 
发帖
11984
白金币
8007
威望
4073
人气
62
昵称
我玩过
正在玩
爱好
只看楼主 倒序阅读 楼主  发表于: 2007-06-25
就算不思考全部填满都要1分钟了

发帖
5582
白金币
8312
威望
1389
人气
0
昵称
Anarchy
我玩过
EQ WOW
正在玩
MHP3
爱好
只看该作者 沙发  发表于: 2007-06-25
人家大脑小脑都比你发达

发帖
3476
白金币
3430
威望
1047
人气
6
昵称
我玩过
正在玩
爱好
只看该作者 板凳  发表于: 2007-06-25
 
发帖
1099
白金币
1173
威望
270
人气
0
昵称
黑毛
我玩过
EQ,LOTRO,WOW,GW,DDO,PSOL,
正在玩
WOW,LOTRO
爱好
只看该作者 地板  发表于: 2007-06-25
萝卜的脑容量有限,请大家尽量说的通俗点  
发帖
11984
白金币
8007
威望
4073
人气
62
昵称
我玩过
正在玩
爱好
只看该作者 粪坑  发表于: 2007-06-25
切, 有本事去挑战看看

我还可以更快..不失误可以到2分中内.还好WINDING 提醒我1个ID只能赢1个帐号
mer

发帖
4556
白金币
1141
威望
1459
人气
0
昵称
我玩过
正在玩
爱好
只看该作者 粪坑边缘  发表于: 2007-06-25
外挂 !!


   

我智慧的大脑分析出的结果
暗黑3 亚太服 mer#3790

发帖
668
白金币
1432
威望
186
人气
0
昵称
Stone
我玩过
正在玩
爱好
只看该作者 前排围观  发表于: 2007-06-25
嘿嘿.貌似我现在第一...

发帖
11083
白金币
14929
威望
3303
人气
48
昵称
winding thend 德莫 坚果
我玩过
MUD.UO.EQ.PSOL.EVE.LOTRO.天下2.WOT
正在玩
激战2美服 EVE
爱好
书 电影 游戏
只看该作者 7 发表于: 2007-06-25
坐山观猪斗
   
XFIRE:junglejia
STEAM:junglejia
====================
GW2:Der Mo /Winding Forest
TC服务器
发帖
11984
白金币
8007
威望
4073
人气
62
昵称
我玩过
正在玩
爱好
只看该作者 8 发表于: 2007-06-25
乘石头不在,重夺第一
发帖
483
白金币
499
威望
17
人气
0
昵称
我玩过
正在玩
爱好
只看该作者 9 发表于: 2007-06-25
rob也是你吧
发帖
11984
白金币
8007
威望
4073
人气
62
昵称
我玩过
正在玩
爱好
只看该作者 10 发表于: 2007-06-25
嗯,一个ID只能赢一个

发帖
1456
白金币
197
威望
435
人气
0
昵称
十三
我玩过
EQ EQ2 WOW DDO GW WHOL LOTRO Allods RIFT SWTOR GW2
正在玩
PoE
爱好
只看该作者 11 发表于: 2007-06-25
貌似可以用程序?
EQ is like your first kiss. You'll never get that feeling back again!
                                                              --Brad McQuaid

发帖
1456
白金币
197
威望
435
人气
0
昵称
十三
我玩过
EQ EQ2 WOW DDO GW WHOL LOTRO Allods RIFT SWTOR GW2
正在玩
PoE
爱好
只看该作者 12 发表于: 2007-06-25
Re:转帖的啊。。。
程序思想:搜索的回溯算法。

程序下载:数独程序      注意:请严格按输入文件格式,否则不能得到正确答案。

程序说明:Dos程序,绝无病毒。如程序有问题,请务必在此报错,谢谢。

将程序和输入文件放到同一文件夹,再运行程序。

输入文件:in.txt  0表示要填的空
0 0 7 0 6 9 0 2 1
0 8 0 5 0 0 6 0 7
2 0 0 4 0 0 0 9 0
0 2 4 0 0 0 0 0 5
6 0 0 0 0 0 0 0 2
1 0 0 0 0 0 7 6 0
0 9 0 0 0 8 0 0 6
8 0 2 0 0 5 0 3 0
5 1 0 3 9 0 2 0 0

输出文件:ans.txt  第一组是输入数据,以后的是答案,理论上有几组就能输出几组,无解就只有第一组数据。
0  0  7  0  6  9  0  2  1 
0  8  0  5  0  0  6  0  7 
2  0  0  4  0  0  0  9  0 
0  2  4  0  0  0  0  0  5 
6  0  0  0  0  0  0  0  2 
1  0  0  0  0  0  7  6  0 
0  9  0  0  0  8  0  0  6 
8  0  2  0  0  5  0  3  0 
5  1  0  3  9  0  2  0  0 

3  4  7  8  6  9  5  2  1 
9  8  1  5  3  2  6  4  7 
2  6  5  4  7  1  8  9  3 
7  2  4  9  8  6  3  1  5 
6  3  9  1  5  7  4  8  2 
1  5  8  2  4  3  7  6  9 
4  9  3  7  2  8  1  5  6 
8  7  2  6  1  5  9  3  4 
5  1  6  3  9  4  2  7  8 

源代码如下:

#include<iostream>
#include<fstream>
using namespace std;

ifstream fin("in.txt");
ofstream fout("ans.txt");

int b[9][9],h[9][10]={0},l[9][10],k[9][10];
int q=0,w=0;
int p(int m,int n)
{
if(m<=2&&n<=2)
  return 0;
if(m<=2&&m>=0&&n<=5&&n>=3)
  return 1;
if(m<=2&&m>=0&&n<=8&&n>=6)
  return 2;
if(m<=5&&m>=3&&n<=2&&n>=0)
  return 3;
if(m<=5&&m>=3&&n<=5&&n>=3)
  return 4;
if(m<=5&&m>=3&&n<=8&&n>=6)
  return 5;
if(m<=8&&m>=6&&n<=2&&n>=0)
  return 6;
if(m<=8&&m>=6&&n<=5&&n>=3)
  return 7;
if(m<=8&&m>=6&&n<=8&&n>=6)
  return 8;
}

void go(int m,int n)
{
int i;
if(b[m][n]==0)
{
  for (i=1;i<=9;i++)
  {
  if((h[m]==0&&l[n]==0)&&k[p(m,n)]==0)
  {
    b[m][n]=i;
    h[m]=1;
    l[n]=1;
    k[p(m,n)]=1;
    if(n==8)
    {
    if(m==8)
      for(q=0,w=0;q<9;)//fout
      {
      fout<<b[q][w]<<"  ";
      if (w==8)
      {
        if(q==8)
        {
        fout<<endl<<endl;
        break;
        }
        else
        {
        q=q+1;
        w=0;
        fout<<endl;
        }
      }
      else
        w++;
      }//end fout
    else
      go(m+1,0);
    }
    else
    go(m,n+1);
    b[m][n]=0;
    h[m]=0;
    l[n]=0;
    k[p(m,n)]=0;
  }
  }
}
else
{
  if(n==8)
  {
  if(m==8)
  {
      for(q=0,w=0;q<9;)//fout
      {
      fout<<b[q][w]<<"  ";
      if (w==8)
      {
        if(q==8)
        {
        fout<<endl<<endl;
        break;
        }
        else
        {
        q=q+1;
        w=0;
        fout<<endl;
        }
      }
      else
        w++;
      }//end fout
  }
  else
    go(m+1,0);
  }
  else
  go(m,n+1);
}
}

void main()
{
int i,j,a;
for(i=0,j=0;;)
{
  fin>>b[j];
  a=b[j];
  if(b[j]!=0)
  {
  k[p(i,j)][a]=1;
  h[a]=1;
  l[j][a]=1;
  }
  if(j==8)
  {
  if(i==8)
    break;
  else
  {
    i++;
    j=0;
  }
 
  }
  else
  j++;

}
for(q=0,w=0;q<9;)//fout
{
  fout<<b[q][w]<<"  ";
  if (w==8)
  {
  if(q==8)
  {
    fout<<endl<<endl;
    break;
  }
  else
  {
    q=q+1;
    w=0;
    fout<<endl;
  }
  }
  else
  w++;
}//end fout
go(0,0);
fin.close();
fout.close();
}
//程序结束
EQ is like your first kiss. You'll never get that feeling back again!
                                                              --Brad McQuaid
发帖
3
白金币
103
威望
0
人气
0
昵称
我玩过
正在玩
爱好
只看该作者 13 发表于: 2007-06-27
……
虽然格式是这样,发到BBS好歹编辑下吧
这么看会眼晕的
快速回复
限300 字节
 
上一个 下一个