POJ 1166 The Clocks (爆搜 || 高斯消元)
题目链接
题意:
输入提供9个钟表的位置(钟表的位置只能是0点、3点、6点、9点,分别用0、1、2、3)表示。而题目又提供了9的步骤表示可以用来调正钟的位置,例如1 ABDE表示此步可以在第一、二、四、五个钟调正,如原来是0点,那么调正后为3点。问经过那些步骤可以导致9个钟的位置都在0点。
分析:
这个本来是一个高斯消元的题目,但是 听说周期4不是素数, 求解过程中不能进行取余。因为取余可能导致解集变大。
不过也有用高斯消元做的,下面是用高斯消元的分析
”
Discuss也有人讨论了,4不是质数,求解过程中不能模4,不一定有解的问题。按照我的理解,题目既然说了有唯一解,就不用考虑这个问题了。
另外,寻找当前列的对应行时不能选绝对值最大的,会WA。具体原因不详
“
这个题也可以用逆矩阵做,下面有代码,代码来自:http://blog.csdn.net/sf____/article/details/9863927
爆搜的特点:
操作对环境的改变是无序的,每个操作都会影响到周围的状态。
同时每一种操作都有周期性限制,也即最多需要几次操作,多于这个次数产生循环。
这里,有4种循环的状态,因此每个移动操作顶多使用3次。
爆搜代码:
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cstdlib> 5 #include <cmath> 6 #include <algorithm> 7 #define LL __int64 8 const int maxn = 70+10; 9 const int INF = 1<<28; 10 using namespace std; 11 12 int main() 13 { 14 int x,a[10],i[10],j[10]; 15 for(x=1; x<=9; x++) 16 scanf("%d",&a[x]); 17 for(i[1]=0; i[1]<=3; i[1]++) 18 for(i[2]=0; i[2]<=3; i[2]++) 19 for(i[3]=0; i[3]<=3; i[3]++) 20 for(i[4]=0; i[4]<=3; i[4]++) 21 for(i[5]=0; i[5]<=3; i[5]++) 22 for(i[6]=0; i[6]<=3; i[6]++) 23 for(i[7]=0; i[7]<=3; i[7]++) 24 for(i[8]=0; i[8]<=3; i[8]++) 25 for(i[9]=0; i[9]<=3; i[9]++) 26 { 27 j[1]=(a[1]+i[1]+i[2]+i[4])%4; 28 j[2]=(a[2]+i[1]+i[2]+i[3]+i[5])%4; 29 j[3]=(a[3]+i[2]+i[3]+i[6])%4; 30 j[4]=(a[4]+i[1]+i[4]+i[5]+i[7])%4; 31 j[5]=(a[5]+i[1]+i[3]+i[5]+i[7]+i[9])%4; 32 j[6]=(a[6]+i[3]+i[5]+i[6]+i[9])%4; 33 j[7]=(a[7]+i[4]+i[7]+i[8])%4; 34 j[8]=(a[8]+i[5]+i[7]+i[8]+i[9])%4; 35 j[9]=(a[9]+i[6]+i[8]+i[9])%4; 36 if(j[1]+j[2]+j[3]+j[4]+j[5]+j[6]+j[7]+j[8]+j[9]==0) 37 { 38 for(x=0; x<i[1]; x++) printf("1 "); 39 for(x=0; x<i[2]; x++) printf("2 "); 40 for(x=0; x<i[3]; x++) printf("3 "); 41 for(x=0; x<i[4]; x++) printf("4 "); 42 for(x=0; x<i[5]; x++) printf("5 "); 43 for(x=0; x<i[6]; x++) printf("6 "); 44 for(x=0; x<i[7]; x++) printf("7 "); 45 for(x=0; x<i[8]; x++) printf("8 "); 46 for(x=0; x<i[9]; x++) printf("9 "); 47 cout<<endl; 48 } 49 } 50 return 0; 51 }
1 // 逆矩阵 2 #include <cstdio> 3 #include <cstring> 4 using namespace std; 5 6 int a[9][9]={ 7 {3,2,3,2,2,1,3,1,0,}, 8 {3,3,3,3,3,3,2,0,2,}, 9 {3,2,3,1,2,2,0,1,3,}, 10 {3,3,2,3,3,0,3,3,2,}, 11 {3,2,3,2,1,2,3,2,3,}, 12 {2,3,3,0,3,3,2,3,3,}, 13 {3,1,0,2,2,1,3,2,3,}, 14 {2,0,2,3,3,3,3,3,3,}, 15 {0,1,3,1,2,2,3,2,3,}}; 16 17 int x[9]; 18 int res[9]; 19 20 int main() 21 { 22 for(int i=0;i<9;i++) 23 { 24 scanf("%d",x+i); 25 x[i]=(4-x[i])%4; 26 } 27 28 for(int i=0;i<9;i++) 29 for(int j=0;j<9;j++) 30 res[i]+=a[i][j]*x[j]; 31 32 for(int i=0;i<9;i++) while(res[i]%4 && res[i]--) 33 printf("%d ",i+1); 34 puts(""); 35 }
转载于:https://www.cnblogs.com/bfshm/p/3925479.html
POJ 1166 The Clocks (爆搜 || 高斯消元)相关推荐
- poj 1681 Painter#39;s Problem(高斯消元)
http://poj.org/problem? id=1681 求最少经过的步数使得输入的矩阵全变为y. 思路:高斯消元求出自由变元.然后枚举自由变元,求出最优值. 注意依据自由变元求其它解及求最优值 ...
- POJ 1222 EXTENDED LIGHTS OUT(高斯消元)
[题目链接] http://poj.org/problem?id=1222 [题目大意] 给出一个6*5的矩阵,由0和1构成,要求将其全部变成0,每个格子和周围的四个格子联动,就是说,如果一个格子变了 ...
- poj 1681 Painter's Problem (高斯消元 )
http://poj.org/problem?id=1681 题意": 一个n*n 的木板 ,每个格子 都 可以 染成 白色和黄色,( 一旦我们对也个格子染色 ,他的上下左右 都将改变颜色) ...
- 开关问题 POJ - 1830 高斯消元
开关问题 POJ - 1830 有N个相同的开关,每个开关都与某些开关有着联系,每当你打开或者关闭某个开关的时候,其他的与此开关相关联的开关也会相应地发生变化,即这些相联系的开关的状态如果原来为开就变 ...
- POJ 1753 Flip Game 高斯消元
和1222,1681差不多 POJ 1222 高斯消元更稳 POJ 1681 高斯消元 枚举自由变元 equ = 16 ,var = 16的方程组 #include <cstdio> #i ...
- POJ 1222 1681 1830 3185 开关灯问题 (高斯消元 异或方程组)
POJ 1222 EXTENDED LIGHTS OUT 基本的开关灯问题.还保证唯一解. 我们把每一个灯泡当成一个状态xi,总共有30个,而且每个灯与其他灯的关系也很明显.所以我们就可以列30方程3 ...
- 高斯消元 zoj 3645 poj 1222/XOR消元
double a[maxn][maxn] , x[maxn] ; //a[i][j] 系数矩阵 , a[i][n+1] = y[i] , x解 int n ; //n个方程 void guass(){ ...
- POJ 1830 开关问题 【01矩阵 高斯消元】
任意门:http://poj.org/problem?id=1830 开关问题 Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 1 ...
- POJ 3532 基尔霍夫电流定律 + 高斯消元
题意 传送门 POJ 3532 题解 基尔霍夫电流定律(KCLKCLKCL):在集总参数电路中,任一瞬间,流入或流出电路中任一节点的电流代数和恒等于零.若规定流出为正,则流入为负,KCLKCLKCL ...
最新文章
- python 帮助文档、自我解释
- python2.7和3.7共存_centos7 python2 和python3 共存[转]
- netty web 容器_Netty - 高性能网络应用框架常见面试题
- 将自己的类封装为lib的方法
- java 异常机制_深入理解Java异常处理机制
- windows无法访问指定设备路径或文件_完全免费的文件数据恢复工具:Microsoft Windows File Recovery...
- SQL Server 判定时间是否在某个时间区间内
- Django2.1.1与xadmin0.6.0遇到的坑
- mysql中加号变成空格了_从数据库中读取字符串时其中的空格变成加号
- 炮灰模型——女生选择追求者模型
- MySQL之可视化软件
- 【26】Superscalar和VLIW:如何让CPU的吞吐率超过1?
- hive —— 分区表
- 经典r-k法 matlab,解微分方程欧拉法,R-K法及其MATLAB实例
- CentOS7 ftp服务离线安装
- JS微信打飞机游戏(一)
- LeetCode解题记录(409)——最长回文串
- 高性能专业上网行为管理设备WSG-500E开箱评测
- 【深度学习小知识】K-means聚类
- kali翻译插件_Kali优化之安装翻译工具goldendict及使用方法