您的位置:首页 > 其它

华为在线训练(5)

2016-07-29 19:18 363 查看
1、题目描述

给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。

每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个字母拥有相同的“漂亮度”。字母忽略大小写。

给出多个名字,计算每个名字最大可能的“漂亮度”。

输入描述:整数N,后续N个名字
输出描述:每个名称可能的最大漂亮程度

//思路:不知道字符的漂亮度,把出现次数最多的字符定义为最大漂亮度,依据出现的次数,漂亮度依次递减。这样求出最大的漂亮度
//
#include <iostream>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
int test;
while (cin >> test)
{
while (test--)
{
string st;
cin >> st;
int i, a[26] = {0}, k = 26, res = 0;
for (i = 0; i < st.length(); ++i)
{
if (st[i] >= 'a' && st[i] <= 'z')
a[st[i] - 'a']++;
else
a[st[i] - 'A']++;
}
sort(a, a + 26);
for (i = 25; i >= 0; --i)
res += a[i] * k--;
cout << res << endl;
}
}
return 0;
}


2、题目描述

蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。

样例输入

5

样例输出

1 3 6 10 15

2 5 9 14

4 8 13

7 12

11


先计算出j=0列的数值,然后依次计算出每一行值并输出

<pre name="code" class="cpp">#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
int a[100][100]={0};
int N=6;
a[0][0]=1;
for(int i=0;i<N;i++)
{
if(i>=1)
a[i][0]=a[i-1][0]+i+0;//先计算a[i][0]的数值
cout<<a[i][0];
for(int j=1;j<N-i;j++)//根据相邻数据的关系,依次计算并输出该行
{
a[i][j]=i+j+a[i][j-1]+1;
cout<<" "<<a[i][j];
}
cout<<endl;
}
return 0;
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: