UVA 12337
来源:互联网 发布:演员 知乎 编辑:程序博客网 时间:2024/04/30 04:14
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3759
————————————————————————————————————————
题目描述:
有三种颜色的棋子,摆放棋子的顺序已经给出来了,要求把这些棋子蛇形排列到棋盘上,若排列过后,所有行的棋子种类都一样,就是成功的案例。求这些成功的案例中,棋盘长+宽最小的值是多少。
————————————————————————————————————————
题目思路:
棋子数目给定了,那么棋盘的面积就给定了。根据均值不等式 ,当长宽越接近时,长加宽的值越小。
根据这个原则我们开始枚举长宽,并且检测其是否为成功的案例(注意长宽值要颠倒再做一次检测)。
思路应该不难想。一遍ac了。
————————————————————————————————————————
源代码:
#include <iostream>#include<stdio.h>#include<math.h>#include<string.h>using namespace std;char s[110];int judge(int m,int n){ int i = 0,j = 0,curj = 0,curi = 0,cur = 1; int cell[52][52]; for(i = 0;i<n;i++) for(j = 0;j<m;j++) cell[i][j] = 0; cell[0][0] = s[0]; for(i = 1;i<strlen(s);i++) { if(cur == 1) { if(curj == m-1 || cell[curi][curj+1]) { curi ++; cur = 2; } else curj ++; } else if(cur == 0) { if(curi == 0 || cell[curi-1][curj]) { curj++; cur = 1; } else curi --; } else if(cur == 2) { if(curi == n-1 || cell[curi+1][curj]) { curj--; cur = 3; } else curi++; } else if(cur == 3) { if(curj == 0 || cell[curi][curj-1]) { curi--; cur = 0; } else curj--; } cell[curi][curj] = s[i]; } for(i = 0;i<m;i++) { for(j = 1;j<n;j++) if(cell[j][i]!=cell[0][i]) return 0; } return 1;}int main(){ int t = 0,k = 0; int i = 0,len = 0,j = 0,ans = 0; scanf("%d",&t); for(k = 1;k<=t;k++) { scanf("%s",s); len = strlen(s); for(i = sqrt(len);i>1;i--) { if(len%i == 0) j = len/i; else continue; if(judge(i,j) || judge(j,i)) break; } if(i>1) ans = i+j; else ans = -1; printf("Case %d: %d\n",k,ans); } return 0;}
- UVA 12337
- UVA 12337 暴力
- uva
- UVA
- UVA
- UVA
- uva
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- sqldeveloper启动时报Unable to create an instance of the Java Virtual Machine Located at path: ..\..\jdk\
- Linux 到现在还是没有线程呀?
- UVA 10420 战利品列表
- 智能指针的一个bug
- java中各种时间格式的转化
- UVA 12337
- Qt中启动Uri
- 五款最好的免费同步软件
- Mybatis自动生成Mapper工具配置文件
- matlab安装详细说明--百度文库链接地址
- 又是盗窃案?三星集团总裁李健熙千万跑车疑是贼赃
- 新时尚Windows8开发(5):消息框
- 解决:warning C4996: “ATL::CRegKey::SetValue”被声明为否决的
- 系统调用sys/inotify.h终于找到了