69,382
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void bubbleSort(int *arr, int len)
{
int i, j, flag=0, t;
for(i = 0; i < len; ++i)
{
for(j = 0; j < len-1; ++j)
{
if(arr[j] > arr[j+1])
{
t = arr[j];
arr[j] = arr[j+1];
arr[j+1] = t;
flag = 1;
}
}
if(flag == 0)
break;
flag = 0;
}
}
int main()
{
int row_num, i, j, a[26]={0}, nums[1000], len, count;
char arr[10000];
scanf("%d", &row_num);
count = row_num;
while(count--)
{
scanf("%s", arr);
//将所有的字母都按照他们在字母表中的位置放在数组里面
for(i = 0; i < strlen(arr); ++i)
{
a[(int)(arr[i]-'A')]++;
}
i = 0;
//以下对每个数字独特的字母进行处理
//只有0里面有Z,所以有几个Z就有几个0
if(a[25])
while(a[25]--)
{
nums[i++] = 2;
a[4]--;
a[17]--;
a[14]--;
}
//只有2有W
if(a[22])
while(a[22]--)
{
nums[i++] = 4;
a[19]--;
a[14]--;
}
//只有4有U
if(a[20])
while(a[20]--)
{
nums[i++] = 6;
a[5]--;
a[14]--;
a[17]--;
}
//只有6有X
if(a[23])
while(a[23]--)
{
nums[i++] = 8;
a[18]--;
a[8]--;
}
//只有8有G
if(a[6])
while(a[6]--)
{
nums[i++] = 0;
a[4]--;
a[8]--;
a[7]--;
a[19]--;
}
//在之前处理完成后,剩下的里面只有1有O
if(a[14])
while(a[14]--)
{
nums[i++] = 3;
a[13]--;
a[4]--;
}
//3
if(a[19])
while(a[19]--)
{
nums[i++] = 5;
a[7]--;
a[17]--;
a[4] -= 2;
}
//5
if(a[5])
while(a[5]--)
{
nums[i++] = 7;
a[8]--;
a[21]--;
a[4]--;
}
//7
if(a[18])
while(a[18]--)
{
nums[i++] = 9;
a[4] -= 2;
a[21]--;
a[13]--;
}
//9
if(a[13])
while(a[8]--)
{
nums[i++] = 1;
a[13] -= 2;
a[4]--;
}
len = i;
bubbleSort(nums, len);
for(j = 0; j < len; ++j)
printf("%d", nums[j]);
printf("\n");
memset(nums, 0, len);
memset(a, 0, 26);
for(j = 0; j < len; ++j)
printf("%d", nums[j]);
memset(arr, '\0', strlen(arr));
}
return 0;
}
#include <stdio.h>
#include <string.h>
#include <memory.h>
int main()
{
char cipher[10001];
int T, i, j, len;
int letters[26], numbers[10], numbers_minus_8[10];
scanf("%d", &T);
while(T--)
{
scanf("%s", cipher);
memset(letters, 0, 26 * sizeof(int));
len = strlen(cipher);
for (i = 0; i < len; i++)
{
letters[cipher[i] - 'A']++;
}
// 0 ZERO: Z
numbers[0] = letters['Z' - 'A'];
letters['E' - 'A'] -= letters['Z' - 'A'];
letters['R' - 'A'] -= letters['Z' - 'A'];
letters['O' - 'A'] -= letters['Z' - 'A'];
letters['Z' - 'A'] = 0;
// 2 TWO: W
numbers[2] = letters['W' - 'A'];
letters['T' - 'A'] -= letters['W' - 'A'];
letters['O' - 'A'] -= letters['W' - 'A'];
letters['W' - 'A'] = 0;
// 4 FOUR: U
numbers[4] = letters['U' - 'A'];
letters['F' - 'A'] -= letters['U' - 'A'];
letters['O' - 'A'] -= letters['U' - 'A'];
letters['R' - 'A'] -= letters['U' - 'A'];
letters['U' - 'A'] = 0;
// 6 SIX: X
numbers[6] = letters['X' - 'A'];
letters['S' - 'A'] -= letters['X' - 'A'];
letters['I' - 'A'] -= letters['X' - 'A'];
letters['X' - 'A'] = 0;
// 4 FOUR: U
numbers[8] = letters['G' - 'A'];
letters['E' - 'A'] -= letters['G' - 'A'];
letters['I' - 'A'] -= letters['G' - 'A'];
letters['H' - 'A'] -= letters['G' - 'A'];
letters['T' - 'A'] -= letters['G' - 'A'];
letters['G' - 'A'] = 0;
// second round
// 1 ONE: O
numbers[1] = letters['O' - 'A'];
letters['N' - 'A'] -= letters['O' - 'A'];
letters['E' - 'A'] -= letters['O' - 'A'];
letters['O' - 'A'] = 0;
// 3 THREE: H
numbers[3] = letters['H' - 'A'];
letters['T' - 'A'] -= letters['H' - 'A'];
letters['R' - 'A'] -= letters['H' - 'A'];
letters['E' - 'A'] -= letters['H' - 'A'];
letters['E' - 'A'] -= letters['H' - 'A'];
letters['H' - 'A'] = 0;
// 5 FIVE: F
numbers[5] = letters['F' - 'A'];
letters['I' - 'A'] -= letters['F' - 'A'];
letters['V' - 'A'] -= letters['F' - 'A'];
letters['E' - 'A'] -= letters['F' - 'A'];
letters['F' - 'A'] = 0;
// 7 SEVEN: S
numbers[7] = letters['S' - 'A'];
letters['E' - 'A'] -= letters['S' - 'A'];
letters['V' - 'A'] -= letters['S' - 'A'];
letters['E' - 'A'] -= letters['S' - 'A'];
letters['N' - 'A'] -= letters['S' - 'A'];
letters['S' - 'A'] = 0;
// only NINE left
// 9 NINE: F
numbers[9] = letters['I' - 'A'];
// minus 8
for (i = 0; i <=9; i++)
{
numbers_minus_8[(i + 2) % 10] = numbers[i];
}
// print answer
for (i = 0; i <=9; i++)
{
if(numbers_minus_8[i])
{
for (j = 0; j < numbers_minus_8[i]; j++)
{
printf("%d", i);
}
}
}
printf("\n");
}
return 0;
}
//0 ~ 9 计数
int numes[10] = {0};
// ....
// 看你的程序,好像到偏移了 2? 0->2, 1->3, 2->4 ...
// 0 ,其它同
nums[2] += a[25];
a[4] -= a[25];
a[17]-=a[25];
a[14]-=a[25];
a[25] = 0;
// 输出
for (int i = 0; i < 10; i ++)
for (int j = 0; j < nums[i]; j++)
putchar('0' + i);
putchar('\n');
==============================
memset(nums, 0, len);
memset(a, 0, 26);
// 这里又输出了一遍是题目要求吗?这次已经清零了,就全是零了啊。
for(j = 0; j < len; ++j)
printf("%d", nums[j]);
// 你的 arr 够大吗?
//memset(arr, '\0', strlen(arr));
memset(arr, 0, sizeof(arr));