思路: 因為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或...