poj2965 The Pilots Brothers' refrigerator
这题有人用毒瘤的高斯消元做,也有人DFS,BFS,还有人证明性质然后直接计算,而我选择了最暴力的方法:
2^16枚举!
一算复杂度发现最坏情况是65536×16×4,无压力......
秒A
1 #include <cstdio> 2 using namespace std; 3 4 bool a[4][4], d[4][4]; 5 6 inline bool open() { 7 for(int i = 0; i <= 3; i++) { 8 for(int j = 0; j <= 3; j++) { 9 if(a[i][j]) { 10 return 0; 11 } 12 } 13 } 14 return 1; 15 } 16 17 inline void click(int k) { 18 int x = k / 4, y = k % 4; 19 for(int i = 0; i <= 3; i++) { 20 a[i][y] ^= 1; 21 a[x][i] ^= 1; 22 } 23 a[x][y] ^=1; 24 return; 25 } 26 27 inline void out(int k) { 28 int ans = 0; 29 for(int i = 0; i <= 15; i++) { 30 if(k & (1 << i)) { 31 ans++; 32 } 33 } 34 printf("%d\n", ans); 35 for(int i = 0; i <= 15; i++) { 36 if(k & (1 << i)) { 37 printf("%d %d\n", i / 4 + 1, i % 4 + 1); 38 } 39 } 40 return; 41 } 42 43 int main() { 44 for(int i = 0; i <= 3; i++) { 45 for(int j = 0; j <= 3; j++) { 46 char c = getchar(); 47 while(c != '+' && c != '-') { 48 c = getchar(); 49 } 50 d[i][j] = (c == '+'); 51 } 52 } 53 for(int i = 0; i < (1 << 16); i++) { 54 for(int j = 0; j <= 3; j++) { 55 for(int k = 0; k <= 3; k++) { 56 a[j][k] = d[j][k]; 57 } 58 } 59 for(int j = 0; j <= 15; j++) { 60 if(i & (1 << j)) { 61 click(j); 62 } 63 } 64 if(open()) { 65 out(i); 66 return 0; 67 } 68 } 69 printf("No solution!"); 70 return 0; 71 }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· 为DeepSeek添加本地知识库
· 精选4款基于.NET开源、功能强大的通讯调试工具
· DeepSeek智能编程
· 大模型工具KTransformer的安装
· [计算机/硬件/GPU] 显卡