📄 yingb.cpp
字号:
/*
把硬币摆放成32×9的矩阵,你可以随意翻转矩阵中的某些行和某些列,问正面朝上的硬币最多有多少枚?
提示:(1)任意一行或一列,翻两次等于没有翻;
(2)对于9列的任何一种翻转的情况,每一行翻与不翻相互独立。
*/
#include <stdio.h>
/*
#define WALL -2
#define FORT 1
*/
int row,col;//
int a[32][9]={-1};
int b[32][9];//放置最优方案
int currentnum=0;
int bestnum=0;
//
void readdata(){//
a[1][4]=1;
a[10][2]=1;
a[12][4]=1;
a[3][7]=1;
a[24][6]=1;
a[17][6]=1;
a[13][2]=1;
a[19][1]=1;
a[23][7]=1;
a[29][6]=1;
a[31][8]=1;
}
int reversecol(int m)
{
for(int i=0;i<32;i++){
a[m][i]*=-1;
}
}
int reverserow(int m){
for(int i=0;i<9;i++){
a[i][m]*=-1;
}
}
void checkmax(){//
for(int i=0;i<32;i++){
}
if(bestnum<currentnum){
bestnum=currentnum;
for(int i=0;i<15;i++){
b[i]=a[i];
}}
}
void search(int m){//
if(m>8)
checkmax();
else{
reversecol(m);
search(m+1);
reversecol(m);
}
search(m+1);
}
}
void printresult()
{
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
printf("%d ",b[i*4+j]);
}
printf("\n");}
}
void main(){
readdata();
search(0);
printresult();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -