#include <stdio.h>
#include <stdlib.h>
/*
首先,我们考虑用长度为9的数组表示表盘的状态以及调表的操作,终止的条件是表盘状态数组所有元素模4为0;
如果一种操作使用超过4次,那么相当于没有操作,所以操作数组需要多出一位记录造作使用的次数,一个操作最多使用3次
特别是我们注意到这个题没有问操作的顺序,所以操作的前后顺序其实是没有影响的;
这样其实是对进行了哪些操作,操作了多少次进行枚举,也就是对一个9*4的矩阵进行枚举;并求矩阵行元素和的最小值,
一共枚举4的9次方次
*/
short clocks[],min=,operations[][],count[],best[];
void change()//这个函数的作用是按照count调整clocks,并修改min,再把clocks改回去
{
short i,j,flag=,n=;
for(i=;i<;i++)
n+=count[i];
if(n>=min) return;
for(i=;i<;i++)
for(j=;j<;j++)
clocks[j]+=(operations[i][j]*count[i]);
for(i=;i<;i++)
{
if((clocks[i]%)!=)
flag=;
}
if(flag)
{
min=n;
for(i=;i<;i++)
best[i]=count[i];
}
for(i=;i<;i++)
for(j=;j<;j++)
clocks[j]-=(operations[i][j]*count[i]);
}
int main()
{
operations[][]=operations[][]=operations[][]=operations[][]=;
operations[][]=operations[][]=operations[][]=;
operations[][]=operations[][]=operations[][]=operations[][]=;
operations[][]=operations[][]=operations[][]=;
operations[][]=operations[][]=operations[][]=operations[][]=operations[][]=;
operations[][]=operations[][]=operations[][]=;
operations[][]=operations[][]=operations[][]=operations[][]=;
operations[][]=operations[][]=operations[][]=;
operations[][]=operations[][]=operations[][]=operations[][]=;
short i,j;
for(i=;i<;i++)
scanf("%d",&clocks[i]);
while(count[]<)
{
change();
count[]++;
for(i=;i>;i--)
{
count[i-]+=(count[i]/);
count[i]=count[i]%;
}
}
for(i=;i<;i++)
for(j=;j<best[i];j++)
printf("%d ",i+);
return ;
}

最新文章

  1. react+redux教程(七)自定义redux中间件
  2. SQL Server中In-Flight日志究竟是多少
  3. Mysql之日志恢复
  4. 修改mysql用户名密码 和 PHPmysqlAdmin对应密码修改
  5. AspxGridView
  6. 深入学习Heritrix---解析CrawlController(转)
  7. VS2005 VS2008 Manifest 配置问题总结
  8. Semaphore的介绍和使用
  9. 暴力拆解CPU
  10. Asp.Net MVC5入门学习系列③
  11. c++数组易错点总结
  12. Uva 12171 Sculpture - 离散化 + floodfill
  13. 浅谈 drop、truncate和delete的区别
  14. CentOS 6.8 防火墙配置
  15. 什么是web标准、可用性、可访问性
  16. git 修改默认编辑器
  17. 团队-UML
  18. 大数据入门第二十二天——spark(一)入门与安装
  19. 【第二周】PSP
  20. Java:数值-字符串转换(String转Double)

热门文章

  1. Kubernetes-Envoy(一种全新的Ingress实现方式)
  2. Git使用之二:下载远程代码到本地指定文件夹
  3. C++语言入门知识点(详细版)【持续更新每周三更】,小舒舒戳这里!!!
  4. crontab时间规则
  5. thrift服务端到客户端开发简单示例
  6. 【数据结构】 Queue 的简单实现
  7. 获取.jar文件运行时所处的路径
  8. ES6 export,import报错
  9. 剑指offer-调整数组顺序使奇数位于偶数前面13
  10. 最短路径——Dijkstra算法