数学题(找规律)-hdu-4371-Minimum palindrome
来源:互联网 发布:正大软件学校 编辑:程序博客网 时间:2024/06/08 17:27
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=4731
题目大意:
给一个n表示有n种字母(全部小写),给一个m,求一个由不超过n种字母组成的m个小写字母的串S,使得S在所有的满足要求的串中最长的回文子串长度最短。
解题思路:
显然当n>=3时肯定是abcabc这样构造。
当n=1时为aaaaaa...
当n=2时,打表可以发现规律。当m>=9时,都满足开始为aaaa,后面为以babbaa作为循环节的串。
打表截图:
压缩暴力打表代码:
char ans[25],temp[25];int Max;int Cal(char * a,int len){ int res=1; for(int i=0;i<len;i++) { int j; for(j=1;i-j>=0&&i+j<len;j++) if(a[i-j]!=a[i+j]) break; if(j*2-1>res) res=j*2-1; int aa=i,bb=i+1; while(aa>=0&&bb<len) { if(a[aa]!=a[bb]) break; aa--,bb++; } if((i-aa)*2>res) res=(i-aa)*2; } return res;}void dfs(int cur,int len){ if(cur>len) { temp[len]='\0'; int cnt=Cal(temp,len); if(cnt<Max) { strcpy(ans,temp); Max=cnt; } else if(cnt==Max) { if(strncmp(temp,ans,len)<0) strcpy(ans,temp); } return ; } temp[cur]='0'; dfs(cur+1,len); temp[cur]='1'; dfs(cur+1,len);}int main(){ for(int i=1;i<=20;i++) { Max=INF; dfs(0,i); for(int j=0;j<i;j++) putchar(ans[j]-'0'+'a'); putchar('\n'); } return 0;}
代码:
#include<iostream>#include<cmath>#include<cstdio>#include<cstdlib>#include<string>#include<cstring>#include<algorithm>#include<vector>#include<map>#include<set>#include<stack>#include<list>#include<queue>#include<ctime>#define eps 1e-6#define INF 0x3fffffff#define PI acos(-1.0)#define ll __int64#define lson l,m,(rt<<1)#define rson m+1,r,(rt<<1)|1#pragma comment(linker, "/STACK:1024000000,1024000000")using namespace std;char temp[10][10]={"","a","ab","aab","aabb","aaaba","aaabab","aaababb","aaababbb"};char ba[7]="babbaa";int main(){ int t,n,m; scanf("%d",&t); for(int ca=1;ca<=t;ca++) { scanf("%d%d",&n,&m); printf("Case #%d: ",ca); if(m<=n) { for(int i=0;i<m;i++) putchar('a'+i); } else { if(n==1) { for(int i=0;i<m;i++) putchar('a'); } else if(n>=3) { for(int i=0;i<m;i++) { int j=i%3; putchar('a'+j); } } else { if(m<=8) { printf("%s\n",temp[m]); continue; } printf("aaaa"); m-=4; int num=m/6; for(int i=1;i<=num;i++) printf("%s",ba); m-=num*6; for(int i=0;i<m;i++) putchar(ba[i]); } } putchar('\n'); } return 0;}
- 数学题(找规律)-hdu-4371-Minimum palindrome
- HDU 4371 Minimum palindrome 解题报告(找规律)
- HDU - 4731 Minimum palindrome 找规律
- HDU 4731 Minimum palindrome+找规律技巧
- hdu 4371 Minimum palindrome(13年成都网络赛D题)(找规律)
- HDOJ 4731 - Minimum palindrome 找规律
- HDU_4731 Minimum palindrome(找规律)
- HDU 1097 1098 数学题 找规律
- HDU 4279 Number(数学题,找规律)
- HDU 1391 Number Steps(数学题+找规律)
- hdu 4731 Minimum palindrome 找规律 (2013 ACM/ICPC Asia Regional Chengdu Online 1004)
- HDU 4731 Minimum palindrome 找规律 (2013 ACM/ICPC Asia Regional Chengdu Online 1004)
- hdu 4731 Minimum palindrome 找规律 (2013 ACM/ICPC Asia Regional Chengdu Online 1004)
- HDU 4731 Minimum palindrome(规律 构造)
- HDU-6156 Palindrome Function(找规律)
- 数学题 找规律
- 数学题找规律
- hdu 1030 Delta-wave(数学题+找规律)
- Tomcat7 Debug run in ecplise
- Yii笔记
- 03-基于HttpListener的Web服务
- 给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数
- matlab主要命令大全
- 数学题(找规律)-hdu-4371-Minimum palindrome
- 02-NSString的连接、使用和打印
- 游戏开发利器TexturePacker和PhysicsEditor
- 超实用的Java数组技巧攻略分享!
- A*搜索
- c++设计模式--桥接模式
- 覆盖技术
- Android开发时,连接手机offline
- C语言运算符优先级记录-为了自己查找方便