51nod 1316 回文矩陣 (列舉 判斷)

2021-08-28 14:36:52 字數 1521 閱讀 4258

思路: 因為n 和m 並不會很大,所以就直接列舉》=r && >=c 的所有情況,然後將這些情況的結果算出來就可以。

列舉每個點對應的四個點是否被選中就可以。

這裡有幾種情況

**:

#includeusing namespace std;

const int inf =0x3f3f3f;

const int n =10;

int a[n][n];

int rr,cc;

int n,m;

int yi[25];

int vis[10][10];

int hang[10];

int lie[10];

int ans;

char s[10];

void init_yi()

int jud(int cnt,int c0,int c1)

if(cnt==3)

if(cnt==4)

}void solve()

for(int k=0; k

int cnth=0,cntl=0;

for(int k=1; k<=n; k++)

for(int k=1;k<=m;k++)

if(cnth

continue;

int tmp=0;

for(int k=1; k<=n; k++)

if(vis[x2][y2]==0)

if(vis[x3][y3]==0)

if(vis[x4][y4]==0&&(hang[x4]||lie[y4]))

}else if(hang[x1])

if(vis[x2][y2]==0)

if(lie[y2])

if(hang[x4])}}

}else if(lie[y1])

if(vis[x3][y3]==0)

if(hang[x3])

if(lie[y4])}}

}tmp+=jud(cnt,c0,c1);}}

/*if(tmp

printf("\n");

printf("lie\n");

for(int kk=1;kk<=n;kk++)

printf("\n");}*/

ans=min(ans,tmp);}}

}int main()

}ans=inf;

//cout<

solve();

printf("%d\n",ans);

return 0;}/*

1 36

0111

0111

0100

0101

1111

0000

1 12

0110

3 24

0000

1000

1100

1110

*/

51NOD 1316 回文矩陣 列舉

1316 回文矩陣 基準時間限制 1 秒 空間限制 131072 kb 分值 40 難度 4級演算法題 收藏 關注 乙個n m的矩陣a完全由0與1兩個數字組成 0 8 矩陣第i行第j列上的項為a i j i與j從0標起,即0 i0 j1 將矩陣中的任一項a i j 改為數字1 2 將矩陣中的任一項a...

51Nod 1316 回文矩陣

acm模版 這道題搞得我挺焦慮的,矩陣不大,可以暴力列舉。列舉所有的組合,然後在這些組合內部,先固定選取的行,然後遍歷列,保證遍歷完後,選取的行都是回文的 然後再固定選取的列,接著遍歷行,保證遍歷完後,選取的列都是回文的 每種組合得到乙個需要改動的次數,從所有結果中選取最優的即可。include i...

51nod 1316 回文矩陣

思路 預處理出所有的行和列分別為row,col的情況,再遍歷所有情況,之中遍歷矩陣a i j 對於行i,列j是否選取分情況討論 一,行i,列j都選取。對於上圖,行0和列0被選中,此時改變s 0 0 受影響的有s 0 3 s 3 0 因此需要對這三個值進行判斷取最小改變值,此外還有另一種情況,當行3或...