UVA 10785
来源:互联网 发布:51talk怎么样 知乎 编辑:程序博客网 时间:2024/06/05 23:56
题目大意:转换个意思,大概是这样的。m个样例。给定元音辅音的价值。每个样例输入n,输出长度为n的最小价值的组成字符串。其中奇数位为元音,一个元音最多用21次,偶数位为辅音,一个辅音最多用5次。奇偶位可以用的字母,分别讨论,都是从小价值到高价值。相同价值,从上往下。
解题思路:打表,将元音按价值排序到105长度的字符串。辅音按优先级为(价值 > 上下顺序)排序到105长度的字符串。定义两个字符串分别读奇偶的字符,每读入一奇偶字符,就可以表示出两个结果的字符串。对两个字符串排序,按奇偶读给结果字符串。
ps:之前打表一直出错,原因在于,将未能参与结果字符串的字符进行排序,导致了结果出现错误。
ac代码:
#include <iostream>#include <algorithm>#include <cstring>using namespace std;char a[6] = {"AUEOI"};char b[22] = {"JSBKTCLDMVNWFXGPYHQZR"};char s[2][107];int main(){char ll[107], kk[107], res[212][212], temp1[107], temp2[107];int n, m, count=1, temp;for (int i=0; i<105; i++){ll[i] = a[i/21];kk[i] = b[i/5];s[0][i] = ll[i];sort(s[0], s[0]+1+i);for (int j=0,k1=0,k2=0; j<=2*i; j++){sort(s[1], s[1]+i);if (j%2==0)res[2*i][j] = s[0][k1++];else res[2*i][j] = s[1][k2++];res[2*i][j+1] = '\0';}s[1][i] = kk[i];sort(s[1], s[1]+i+1);for (int j=0,k1=0,k2=0; j<=2*i+1; j++){if (j%2==0)res[2*i+1][j] = s[0][k1++];else res[2*i+1][j] = s[1][k2++];res[2*i+1][j+1] = '\0';}}cin >> n;while (n--){cin >> m;printf("Case %d: %s\n", count, res[m-1]);count++;}return 0;}
阅读全文
0 0
- uva 10785
- Uva 10785
- uva 10785
- UVA 10785
- UVa 10785 The Mad
- uva 10785(排序、检索)
- UVA 10785 解题报告
- uva
- UVA
- UVA
- UVA
- uva
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- 对ajax的理解
- 1003. 我要通过!(20)
- Java基础之类与对象
- Java重载
- 修改mysql数据库字符集为UTF8的
- UVA 10785
- Java多线程--线程状态
- localstrage
- C#反射机制
- 【笔记】游戏制作技巧——1
- UVA 10152
- HDU2544最短路
- 【C#】委托和事件实例
- meta标签整理的一些用法