UVA-10785 The Mad Numerologist
2016-07-20 21:14
435 查看
2016-07-20
题目大意:每个字母有一个权值,给定一个长度,构造名字。要求权值最小,奇数位原音,偶数位辅音,且按字母序输出。每个原音最多用 5 次,辅音 21 次。
解题思路:按权值顺序存到数组,排序后组合输出。
注意:对除法的运用,对于整型/是向下取整的。
UVA-10785 The Mad Numerologist
题目大意:每个字母有一个权值,给定一个长度,构造名字。要求权值最小,奇数位原音,偶数位辅音,且按字母序输出。每个原音最多用 5 次,辅音 21 次。解题思路:按权值顺序存到数组,排序后组合输出。
注意:对除法的运用,对于整型/是向下取整的。
#include <iostream> #include <cstdio> #include <cstring> #include <stdlib.h> using namespace std; char y[] = {"AUEOI"}; char f[] = {"JSBKTCLDMVNWFXGPYHQZR"}; int t[1000]; char str1[10000];//偶数辅音 char str2[10000];//奇数元音 int cmp(const void *a , const void *b) { return ( *(char*)a - *(char*)b ); } int main() { int n; scanf("%d",&n); for (int i = 0; i < n; i++) { memset( str1 , '\0' , sizeof(str1) ); memset( str2 , '\0' , sizeof(str2) ); scanf("%d",&t[i]); for (int j = 0; j < t[i]/2; j++) str1[j] = f[j/5]; for (int j = 0; j < t[i] - t[i]/2; j++) str2[j] = y[j/21]; qsort( str1 , t[i]/2 , sizeof(str1[0]) , cmp ); qsort( str2 , t[i] - t[i]/2 , sizeof(str2[0]) , cmp ); cout << "Case " << i + 1 << ": "; int a = 0, b = 0; for (int j = 1; j <= t[i]; j++) { if ( j % 2 ) cout << str2[a++]; else cout << str1[b++]; } cout << endl; } return 0; }
相关文章推荐
- 训练第二周之DFS(深度优先搜索)
- 烧写程序(下载程序)基础知识
- switch 中一旦 case 匹配,就会顺序执行后面的程序代码
- odoo税金处理
- 字符串变换
- 算法的时间复杂度(理论篇)
- 哈希表
- 堆排序
- 基于加速度传感器智能穿戴:神经网络以及判断过程
- Maven实战(一)--Why Maven
- hdoj 5053 the Sum of Cube [数学 立方求和]
- iOS消息推送之远程推送
- 第18章-Java IO系统
- linux 查看内核版本及发行版本
- Linux Shell里面生成随机数的一些思路分析
- 指针
- js学习第二天
- 关于求矩阵主对角线元素之和及副对角线元素之和的问题
- G - 美素数
- WSDL解析