uva11464 偶矩陣,推理題

2021-12-29 22:41:55 字數 1175 閱讀 4986

明天省賽,所以今天做幾道所謂水題,可惜這個題因為輸出寫錯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)

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)

//else 這種情況太二逼了 我居然沒發現這個bug

// return inf;

}else

} // 這種寫法是有問題的,因為

/*以上的步驟都沒有檢測最後一行,一下測試最後一行*/

for(int i=0;i=0)sum+=b[n-2][i];

if(i>0)sum+=b[n-1][i-1];

if(i+1

uva 11464 暴力列舉矩陣

這個題也是乙個列舉子集暴力,訓練賽的時候沒有做出來,這個對於矩陣的表示,偶數矩陣就是乙個位置的上下左右加起來都是偶數,才能算是偶數矩陣,直接暴力列舉第一行,然後確定下面的位置,然後如果有衝突那就不對,如果沒有衝突,然後比對,與之前的矩陣的變換,就可以獲得改變次數,然後每次取最小。include in...

UVa11464偶數矩陣 部分列舉 遞推

題意 有乙個n n的01矩陣,任務是把盡可能少的0變成1,使得每個元素的上 下 左 右元素之和為偶數。n 15 0 0 0 0 1 0 1 0 0 1 0 1 需要3次變化 0 0 0 0 1 0 思路 最容易想到列舉所有數字變或不變,2 15 15 2 255 就是5 10 67左右。注意到n小於...

uva 11464 偶數矩陣 (二進位制表示法)

題目大意 有乙個n n的01矩陣,你的任務是把盡量少的0變成1,但不能將1變成0 以使得每個元素的上下左右的元素 若存在 均為偶數。思路 如果暴力列舉每乙個位置的話時間複雜度為 2 的255 次方,肯定不行 但是如果只列舉第一行,其他下面幾行都能夠通過 上邊的來固定是0還是1。時間複雜度就是 2的1...