POJ 1753 Flip Game 高斯消元
和1222,1681差不多
equ = 16 ,var = 16的方程组
#include <cstdio> #include <cmath> #include <cstring> #include <algorithm> #define INF 1e9 using namespace std; const int maxn = 20; int a[maxn][maxn]; int x[maxn],fre[maxn]; int dx[]= {0,0,-1,0,1}; int dy[]= {0,-1,0,1,0}; void debug(int n) { for(int i=0; i<n; i++) { for(int j=0; j<n; j++) printf("%d ", a[i][j]); printf(" %d\n", a[i][n]); } puts("**************************************************************"); } void init() { memset(a,0,sizeof(a)); for(int i=0; i<4; i++) for(int j=0; j<4; j++) for(int k=0; k<5; k++) { int nx = i+dx[k]; int ny = j+dy[k]; if(nx>=0 && nx <4 && ny>=0 && ny<4) a[i*4+j][nx*4+ny] = 1; } } int Guass(int equ,int var) { // debug(16); int row,col,num; num=row=col=0; while(row<equ && col<var) { //列非零主 int r=row; for(int i=row; i<equ; i++) if(a[i][col]!=0) { r=i; break; } if(r!=row) { for(int j=col; j<var+1; j++) swap(a[row][j],a[r][j]); } if(a[row][col]==0)//说明有自由变元 { fre[num++] = col; col++; continue; } //消元 for(int i=row+1; i<equ; i++) { if(a[i][col]==0) continue; for(int j=col; j<var+1; j++) a[i][j]^=a[row][j]; } // debug(16); row++; col++; } for(int i=row; i<equ; i++) if(a[i][var]!=0) return INF; int sta=1<<(col-row);//自由变元有col-row个 int res=INF; for(int k=0; k<sta; k++) //枚举所有变元 { int cnt=0; int index=k; for(int j=0; j<num; j++) { x[fre[j]]=(index&1); if(x[fre[j]]) cnt++; index>>=1; } for(int i=row-1; i>=0; i--) { x[i]=a[i][var]; for(col=i+1; col<var; col++) x[i]^=(a[i][col]*x[col]); if(x[i])cnt++; } res=min(cnt,res); } return res; } int main() { // freopen("in.txt","r",stdin); char s[10][10]; for(int i=0; i<4; i++) scanf("%s", s[i]); init(); for(int i=0; i<4; i++) for(int j=0; j<4; j++) a[i*4+j][16] = (s[i][j]=='b'? 0:1); int ans1 = Guass(16,16); init(); for(int i=0; i<4; i++) for(int j=0; j<4; j++) a[i*4+j][16] = (s[i][j]=='w'? 0:1); int ans2 = Guass(16,16); if(min(ans1,ans2) == INF) puts("Impossible"); else printf("%d\n", min(ans1, ans2)); return 0; }
分类:
高斯消元
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· 一个基于 .NET 开源免费的异地组网和内网穿透工具
· 《HelloGitHub》第 108 期
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单