程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> uva11464 偶矩陣,推理題

uva11464 偶矩陣,推理題

編輯:C++入門知識

 

明天省賽,所以今天做幾道所謂水題,可惜這個題因為輸出寫錯WA了很久,,,

 

如果直接枚舉矩陣所有的位置是否改變,那麼時間復雜度是承受不住的

這道題讓我學到的,就是:
1、遇到題先手算模擬,然後嘗試找規律吧。這道題的規律就是:第一行一旦確定,那麼整個矩陣就可以確定,所以枚舉第一行,還可以的

2、if else 一定把所有的情況邏輯都理清,這題Debug的時候稍微變了下寫法,又WA了很久,代碼也貼在後面了。Debug的時候,重用代碼的時候好好理理思路,很可能是老思路跟新思路的差異產生新的bug

 

 

#include 
#include 
#include 

using namespace std;

const int MAXN = 20;
//const int INF = 0x3fffffff;999
const int INF = 1000000000;

int n,a[MAXN][MAXN],b[MAXN][MAXN];

int Judge(int m)
{
    //memset(b,0,sizeof(b));
    int tmp=0;
    for(int i=0;i=0)sum+=b[i-1][j-1];
            if(j+1=0)sum+=b[i-2][j];
            if(sum%2)
            {
                if(!b[i][j])
                {
                    b[i][j]=1;
                    tmp++;
                }
                else
                    return INF;
            }
        } // 這種寫法是有問題的,因為
    /*以上的步驟都沒有檢測最後一行,一下測試最後一行*/
    for(int i=0;i=0)sum+=b[n-2][i];
        if(i>0)sum+=b[n-1][i-1];
        if(i+1
#include 
#include 
#include 

using namespace std;

const int MAXN = 20;
//const int INF = 0x3fffffff;999
const int INF = 99999;

int n,a[MAXN][MAXN],b[MAXN][MAXN];

int Judge(int m)
{
    //memset(b,0,sizeof(b));
    int tmp=0;
    for(int i=0;i=0)sum+=b[i-1][j-1];
            if(j+1=0)sum+=b[i-2][j];
            if(sum%2)
            {
                if(!b[i][j])
                {
                    b[i][j]=1;
                    tmp++;
                }
                //else  這種情況太二逼了 我居然沒發現這個bug
                 //   return INF;
            }
            else
            {
                if(b[i][j] == 1)
                    return INF;
            }
        } // 這種寫法是有問題的,因為
    /*以上的步驟都沒有檢測最後一行,一下測試最後一行*/
    for(int i=0;i=0)sum+=b[n-2][i];
        if(i>0)sum+=b[n-1][i-1];
        if(i+1

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved