广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 7140 个阅读者
 
<< 上页  1   2  >>(共 2 页)
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
高应大一年级
个人文章 个人相簿 个人日记 个人地图
路人甲
级别: 路人甲 该用户目前不上站
推文 x0 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

[quote]下面是引用rei于2009-01-02 21:27发表的 : 到引言文


目前是没有看到递回的部份...

给个小提示...

直的、横的、九宫格....有着同一个特性

他们都是要检查9次....(包括本身那格)

[attachment=466850]

另外另一个提示...

不知是否有学过『除法』...



------------

恩阿 但是我就是写不出来怎去检查其他数字表情 ,再怎跑都是第一排而已..

以下 我有多写 check_9X9 函式!!.....但是无用表情

除法 有学过一点点!!!!



#include <iostream>
#include <string>
using namespace std;
int AA[9][9]={ {2,0,0,0,0,0,0,6,0},
    {4,0,6,7,8,0,0,0,0},
    {9,0,0,2,0,0,0,5,7},
    {0,0,0,0,0,0,0,8,9},
    {0,5,0,0,0,0,0,1,0},
    {1,8,0,0,0,0,0,0,0},
    {3,9,0,0,0,4,0,0,6},
    {0,0,0,0,6,8,2,0,1},
    {0,1,0,0,0,0,0,0,0},
  };
int check_9x9(int y,int x) //在阵列(y,x)的位置
{
   int a,b,count,y_start,x_start;
   count=0;
   y_start=(y/9)*9;
   x_start=(x/9)*9; //找出9X9的位置
   for(a=y_start;a<y_start+3;a++) //a 从0~8
   for(b=x_start;b<x_start+3;b++)
   {
   if (AA[y][x]==AA[a]) count++;
   }
   if(count==1) return 1; //合法
   else return 0; //不合法
}
int check_column(int y,int x) //在阵列(y,x)的位置,一整列中是唯一 ? 
{
   int a,count;
   count=0;
   for(a=0;a<9;a++) //a 从0~8
   {
   if (AA[y][x]==AA[y][a]) count++;
   }
   if(count==1) return 1; //合法
   else return 0; //不合法
}
int check_raw(int y,int x) //在阵列(y,x)的位置,一整行中是唯一 ? 
{
   int a,count;
   count=0;
   for(a=0;a<9;a++) //a 从0~8
   {
   if (AA[y][x]==AA[a][x]) count++;
   }
   if(count==1) return 1; //合法
   else return 0; //不合法
}
int check_available(int y, int x)
{
    if(!check_9x9(y,x)) return 0;   //9x9失败
 if(!check_raw(y,x)) return 0;   //raw 失败
 if(!check_column(y,x)) return 0;  //column 失败
    return 1; //成功
}
void output()
{
 int a,b;
 for(a=0;a<9;a++){
  for(b=0;b<9;b++)
   cout<<AA[a]<<" ";
  cout<<endl;
 }
}
int main()
{
 int temp,a,b;
 for(a=1;a<10;a++){
  AA[0][0]=a;
  temp=check_available(0,0);
  if(temp) cout<<"AA[0][0]="<<AA[0][0]<<"此数字OK"<<endl;
 }
    output();
 system("pause");
}



献花 x0 回到顶端 [10 楼] From:台湾固网股份有限公司 | Posted:2009-01-03 23:27 |
rei 手机
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖
小人物
级别: 小人物 该用户目前不上站
推文 x2 鲜花 x366
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

『/』『%』的差异性?

0/9=?
0%9=?

1/9=?
1%9=?

2/9=?
2%9=?

3/9=?
3%9=?

4/9=?
4%9=?

5/9=?
5%9=?

6/9=?
6%9=?

7/9=?
7%9=?

8/9=?
8%9=?

9/9=?
9%9=?
...
直到
80/9=?
80%9=?

以上的问题先求出答案...你会比较好想到要怎么解...

算完之后在配上这个图去想...
答案应该就呼之欲出了!!!!


人生要是跟等巴士一样...
  你愿意搭哪一种车?
爆满?脏车?旧车?新车?空车?还是...走路?
献花 x0 回到顶端 [11 楼] From:台湾中华电信HINET | Posted:2009-01-04 01:35 |
overing 手机
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x55
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

就算是作业~
问的这么认真也已经赢过很多人了
(老师很当的严吧? 表情)

他一开始阵列是二维方式存放数字
直接当作直角座标系来思考
双层巢状回圈做起来也许会比较快~
复制程式
int w = sizeof(AA[0])/AA[0][0]); //取阵列长
int h = sizeof(AA/AA[0]); //取阵列宽
for(int x = 0; x < w; x++) {
    for(int y = 0; y < h; y++) {
        //九宫格 tip : x & y 与 3 的倍数(.....)
        //直横 tip : x & y = ?
    }
}
C这边要取阵列元素好像只能sizeof()
有点忘了 表情


[ 此文章被overing在2009-01-04 23:06重新编辑 ]


Zippy G2 600W
Intel C2Q Q9550
Gigabyte GA-X48-DQ6
Gigabyte GV-NX96T512H-B
G-skill pi 1100MHz 2Gx4
ACARD ANS-9010 32GB (Windows7 10sec boot!!)
WD 150GB(WD1500ADFD)/640GB(6400AASK)
献花 x0 回到顶端 [12 楼] From:未知地址 | Posted:2009-01-04 23:01 |
teldeanmac85 手机
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x1 鲜花 x21
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

其实做法有很多   这个让你参考
请自行修改   因为最近没有太多时间
看你问了那么多天   作业也应该交出去了
刚刚中午休息匆忙的写一下
你可以试试看

check_func 和 check_func2
都可以用 只是作法上不一样而已

如果想写程式就继续坚持下去
加油~

复制程式
#include <iostream>
#include <algorithm>
using namespace std;

#define FAIL 1
#define PASS 0

#define SUM 1+2+3+4+5+6+7+8+9

int check_func(int *buf)
{
     int i;
     sort(buf,buf+9);

     for(i=0;i<9;i++){
          if(*(buf+(i)) - (i+1) != 0){
               return FAIL;
          }
     }
     return PASS;
}

int check_func2(int *buf)
{
     int i,buf_sum=0;

     for(i=0;i<9;i++){
          buf_sum += buf[i];
     }

     if(buf_sum - SUM != 0){return FAIL;}

     return PASS;
}

int main(int argc, char* argv[])
{

        int AA[9][9]={  
                        {1,2,3,4,5,6,7,8,9},             
                        {2,1,2,3,4,5,6,7,8},                    
                        {3,9,1,2,3,4,5,6,7},                    
                        {4,8,9,1,2,3,4,5,6},                    
                        {5,7,8,9,1,2,3,4,5},                   
                        {6,6,7,8,9,1,2,3,4},                  
                        {7,5,6,7,8,9,1,2,3},                   
                        {8,4,5,6,7,8,9,1,2},                    
                        {9,3,4,5,6,7,8,9,1},             
                                                          };
       
       int row_buf[9] = {0};
       int col_buf[9] = {0};
       int n_buf[9] = {0};

       int x=0,y=0,sx=0,sy=0,i=0,j=0,n=0;
       
       for(x=0; x<9; x++){
              for(y=0; y<9; y++){
                 row_buf[y] = AA[x][y] ;
                     col_buf[y] = AA[y][x] ;
              }
              if(check_func(row_buf)){cout<<"FAIL"<<endl;exit(0);}
              if(check_func(col_buf)){cout<<"FAIL"<<endl;exit(0);}
       }

       for(i=0;i<9;i=i+3){
              for(j=0;j<9;j=j+3){       
                     n = 0;
                     for(x=0;x<3;x++){
                            for(y=0;y<3;y++){

                                   n_buf[n] = AA[x+i][y+j];
                                   n++;
                            }
                     }
                     if(check_func(n_buf)){cout<<"FAIL"<<endl;exit(0);}
              }
       }

       return 0;
}


此文章被评分,最近评分记录
财富:50 (by 三仙) | 理由: 因为您的参与,让程式设计更容易!!


献花 x0 回到顶端 [13 楼] From:台湾 | Posted:2009-01-06 12:37 |
高应大一年级
个人文章 个人相簿 个人日记 个人地图
路人甲
级别: 路人甲 该用户目前不上站
推文 x0 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用teldeanmac85于2009-01-06 12:37发表的 : 到引言文
其实做法有很多   这个让你参考
请自行修改   因为最近没有太多时间
看你问了那么多天   作业也应该交出去了
刚刚中午休息匆忙的写一下
你可以试试看
.......



谢谢你表情 
(我输出怎DOS跑出来0.5秒..之后就不见了)

但是 我必须是用递回的方式
递回与FOR 回圈


如果是用递回的方式呢!!是要写在哪里啊??
用在 check_column 函式里面 也没用表情
int a;

a=check_column(n-1)+check_column(n-2);


[ 此文章被高应大一年级在2009-01-06 14:23重新编辑 ]


献花 x0 回到顶端 [14 楼] From:台湾固网股份有限公司 | Posted:2009-01-06 13:36 |
高应大一年级
个人文章 个人相簿 个人日记 个人地图
路人甲
级别: 路人甲 该用户目前不上站
推文 x0 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用rei于2009-01-04 01:35发表的 : 到引言文


以上的问题先求出答案...你会比较好想到要怎么解...

算完之后在配上这个图去想...
答案应该就呼之欲出了!!!!
[attachment=467116]




for ( a=0;a<80;a++ ){
   cout<<a<<"/9="<< a/9<<endl;
   cout<<a<<"%9="<<a%9<<endl;
}


我只知道用FOR 回圈去写而已

但是之后 我就不懂了


[ 此文章被高应大一年级在2009-01-06 14:20重新编辑 ]


献花 x0 回到顶端 [15 楼] From:台湾固网股份有限公司 | Posted:2009-01-06 13:52 |
teldeanmac85 手机
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x1 鲜花 x21
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

(我输出怎DOS跑出来0.5秒..之后就不见了)
= =a~ 他不是不见
你要自己在return 0 或 exit(0)前加
上system("pause"); 或 getchar();

这个很基本 要记起来
因为我是用vc 6.0写的所以在debug mode执行
不会跳开

还有一点是我没有印出阵列 这你应该看得出来
我只有判断array内的是否是合法数独而已

是的话 应该什么都没有 press any key ...
否的话 会印出FAIL字串

递回我是没有用到   我只用for回圈就做完了


下面是引用高应大一年级于2009-01-06 13:36发表的 : 到引言文
 


谢谢你表情 
(我输出怎DOS跑出来0.5秒..之后就不见了)

但是 我必须是用递回的方式
递回与FOR 回圈


如果是用递回的方式呢!!是要写在哪里啊??
用在 check_column 函式里面 也没用表情
int a;

a=check_column(n-1)+check_column(n-2);


献花 x0 回到顶端 [16 楼] From:台湾 | Posted:2009-01-06 20:07 |
rei 手机
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖
小人物
级别: 小人物 该用户目前不上站
推文 x2 鲜花 x366
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用高应大一年级于2009-01-06 13:52发表的 : 到引言文
 
for ( a=0;a<80;a++ ){
   cout<<a<<"/9="<< a/9<<endl;
   cout<<a<<"%9="<<a%9<<endl;
}


我只知道用FOR 回圈去写而已

但是之后 我就不懂了

我讲得那个部份...主要是要看『算出来的答案跟计算过程的关系』...

程式的部份并非重点... 表情

我想你应该知道
『/』是除法
求出来的值则是为『商数』...
『%』也是一种除法
不过求出来的值则是『余数』...
配合上该图片



这图片,跟请你计算的部份~
我们都知道,数读他一共有81格!!!
其中会有某几格会先给我们数值!!!

利用这个特性,将递回的部份来深入求取
如果刚好从AA[0][0]来开始看!!!
将0利用上两个数学式来算
0/9 = 0
0%9 = 0

便可以知道0在座标AA[0][0]的位址....= =+
在递回中加个for来放值~判断是否合理!!
合理则往内切入一格~
不合理则退回至前一格!!!

如果很顺利的切入第81格了话~
恭喜!!!
你已经求出答案了!!!
把他列印出来就完成了!!!

以上XD


人生要是跟等巴士一样...
  你愿意搭哪一种车?
爆满?脏车?旧车?新车?空车?还是...走路?
献花 x0 回到顶端 [17 楼] From:台湾 | Posted:2009-01-06 23:43 |
高应大一年级
个人文章 个人相簿 个人日记 个人地图
路人甲
级别: 路人甲 该用户目前不上站
推文 x0 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

我知道!!

谢谢你们这段时间的指导!!

虽然到最后还是做不出来 表情 表情

但有尸体可以交了!!
还要写报告原因

抱歉:因为平常有在打工,回到家都很晚了,所以都会忘记回覆,请见谅...

C++真难
下学期有物件导向,不知道会不会死很惨 表情


献花 x0 回到顶端 [18 楼] From:台湾固网股份有限公司 | Posted:2009-01-09 14:51 |
leacks 手机
个人文章 个人相簿 个人日记 个人地图
小有名气
级别: 小有名气 该用户目前不上站
推文 x8 鲜花 x324
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

复制程式
这属于c的问题
c++的菁华应该不是用来跑dos介面吧!
话说判断直跟横是否有相同值不是很简单?
aa[][i] i++
aa[i][] i++
这样不就好了
==============
而其余的在八后棋中搭配google一定会有答案
毕竟数独程式出来很久了,都有人做在网页上还有autorun
其余的跟rei相似意见


[ 此文章被leacks在2009-01-09 18:05重新编辑 ]


献花 x0 回到顶端 [19 楼] From:台湾数位联合 | Posted:2009-01-09 17:46 |

<< 上页  1   2  >>(共 2 页)
首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.059548 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言