HDU 4731 Minimum Palindrome
来源:互联网 发布:头条号视频剪辑软件 编辑:程序博客网 时间:2024/06/05 21:08
hdu 4731 Minimum palindrome
题意:前n个字母形成一个m长的字符串,要求如下:
1、最长回文串最小
2、字典序最小
思路:
1.n=1, aaaa……
2.n=2,打表找规律
1 a
2 ab
3 aab
4 aabb
5 aaaba
6 aaabab
7 aaababb
8 aaababbb
9 aaaababba
10 aaaababbaa
11 aaaababbaaa
12 aaaababbaaaa
13 aaaababbaabab
14 aaaababbaababb
15 aaaababbaababba
16 aaaababbaababbaa
17 aaaababbaababbaaa
18 aaaababbaababbaaaa
19 aaaababbaababbaabab
20 aaaababbaababbaababb
3.n>=3,abcabc…… 不存在回文且字典序最小
题意:前n个字母形成一个m长的字符串,要求如下:
1、最长回文串最小
2、字典序最小
思路:
1.n=1, aaaa……
2.n=2,打表找规律
1 a
2 ab
3 aab
4 aabb
5 aaaba
6 aaabab
7 aaababb
8 aaababbb
9 aaaababba
10 aaaababbaa
11 aaaababbaaa
12 aaaababbaaaa
13 aaaababbaabab
14 aaaababbaababb
15 aaaababbaababba
16 aaaababbaababbaa
17 aaaababbaababbaaa
18 aaaababbaababbaaaa
19 aaaababbaababbaabab
20 aaaababbaababbaababb
3.n>=3,abcabc…… 不存在回文且字典序最小
#include <cstring>#include <cstdio>#include <iostream>using namespace std;/*int len;string ans;int cal( string str){ int length = str.length(); int tmp = 0; for(int i = 0; i < length; i ++ ){ for(int j = length - 1; j >= i; j--){ int tmp_i = i; int tmp_j = j; while(tmp_i <= tmp_j && str[tmp_i] == str[tmp_j]){ tmp_i ++; tmp_j --; } if(tmp_i > tmp_j){ int tt = j - i + 1; tmp = ( tt > tmp ) ? tt : tmp; } } } return tmp;} void getString( int level, int total, string str){ if(level == total ){ int tmp = cal(str); if( (tmp < len) || (tmp == len && str < ans) ){ len = tmp; ans = str; } } else{ getString( level + 1, total, str + "a" ); getString( level + 1, total, str + "b" ); }} void dabiao(){ for(int i = 1;i <= 20; i ++){ len = i; ans = ""; for(int j = 0; j < i; j++){ ans += 'b'; } getString(0,i,""); cout << i << " " << ans << endl; } }*/int n,m,t; int main(){ //dabiao(); scanf("%d",&t); for(int i = 1; i <= t; i++){ scanf("%d%d",&m,&n); printf( "Case #%d: ", i ); if( m == 1 ){ for(int j = 0; j < n; j ++){ printf( "a" ); } printf("\n"); } else if( m >= 3 ){ for(int j = 0; j < n / 3; j ++){ printf( "abc" ); } if( n % 3 == 1 ){ printf("a\n"); } else if( n % 3 == 2 ){ printf("ab\n"); } else printf("\n"); } else if( m == 2 ) { if( n == 1 ) printf( "a\n" ); else if( n == 2 ) printf( "ab\n"); else if( n == 3 ) printf("aab\n"); else if( n == 4 ) printf("aabb\n"); else if( n == 5 ) printf("aaaba\n"); else if( n == 6 ) printf("aaabab\n"); else if( n == 7 ) printf("aaababb\n"); else if( n == 8 ) printf("aaababbb\n"); else{ printf("aaaa"); n -= 4; for( int j = 0; j < n / 6 ; j ++ ){ printf("babbaa"); } if(n % 6 == 1 ) printf("a\n"); else if( n % 6 == 2 ) printf("aa\n"); else if( n % 6 == 3 ) printf("bab\n"); else if( n % 6 == 4 ) printf("babb\n"); else if( n % 6 == 5 ) printf("babba\n"); else printf("\n"); } } } //system( "pause" ); return 0;}
0 0
- HDU: 4731 Minimum palindrome
- HDU-4731-Minimum palindrome
- HDU 4731 Minimum palindrome
- HDU 4731 Minimum Palindrome
- HDU 4731 Minimum palindrome
- hdu 4731 Minimum palindrome(构造)
- HDU 4731 Minimum palindrome 解题报告
- HDU - 4731 Minimum palindrome 找规律
- HDU 4731 Minimum palindrome(规律 构造)
- HDU 4731 Minimum palindrome+找规律技巧
- hdu 4731 Minimum palindrome(网络赛 成都赛区)
- hdu 4731 Minimum palindrome(暴力打表找规律)
- HDU 4731 Minimum palindrome 2013 ACM/ICPC 成都网络赛
- HDOJ 4731 Minimum palindrome
- HDU4731--Minimum palindrome HDU(151)
- 数学题(找规律)-hdu-4371-Minimum palindrome
- hdu 4731 Minimum palindrome 找规律 (2013 ACM/ICPC Asia Regional Chengdu Online 1004)
- 2013 ACM/ICPC Asia Regional Chengdu Online HDU 4731 Minimum palindrome(规律)
- Jquery 弹出div
- 帅气的属性动画赏析(Property Animation)
- 解决ADO不同PC版本问题
- OC学习之道:在实现通讯录的时候可能需要按姓名的首字母来分组,这里实现的就是把汉字转化为拼音并且是拼音首字母大写
- 进程和线程
- HDU 4731 Minimum Palindrome
- android TimeUnit表示给定单元颗粒度的时间段
- [Unity实战]剧情对话(一)
- 大数据时代需要转变的思维
- VS2012 连接MySQl数据库 小测试出的问题
- Android高效加载大图、多图解决方案,有效避免程序OOM
- IDEA快捷键使用技巧整理
- 关于ListView加入HeaderView之后,点击条目时获得position参数移位的BUG修正
- hadoop权威指南中的ncdc数据下载地址及命令