廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 7186 個閱讀者
 
<< 上頁  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.055698 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言