/*比赛描述
有一些A、C、M组成的字符串,将其按字符A排序。
输入
一组测试数据,输入数据由若干行组成,每行是字符A、C或M组成的字符串。(每个字符串长度不超过1200)
输出
对所有输入的数据,先按字符A的个数进行升序排序,如果字符A的数量相等,再按出现的先后顺序排序,每行输出一个字符串。*/
#include<stdio.h>
int Max(int l[],int len)
{
int i,max=l[0];
for (i = 0;i < len;i++)
{
if (max < l[i])
max = l[i];
}
return max;
}
int main()
{
char s[100][1200];
int i=0,j=0,k=0,temp=0;
int l[100] = {0};
int max;
while ((scanf("%s",s[i])) != EOF)
{
// scanf ("%s",s[i]);
// if (s[i][0] == '#')
// break;
i++;
}
for (j = 0;j < i;j++)
{
while (s[j][k] != 0)
{
if (s[j][k] == 'A')
l[j]++;
k++;
}
k = 0;
}
max = Max(l,i);
for (j = 0;j <= max;j++)
{
for (k = 0;k < i;k++)
{
if (l[k] == temp)
printf ("%s\n",s[k]);
}
temp++;
}
return 0;
有一些A、C、M组成的字符串,将其按字符A排序。
输入
一组测试数据,输入数据由若干行组成,每行是字符A、C或M组成的字符串。(每个字符串长度不超过1200)
输出
对所有输入的数据,先按字符A的个数进行升序排序,如果字符A的数量相等,再按出现的先后顺序排序,每行输出一个字符串。*/
#include<stdio.h>
int Max(int l[],int len)
{
int i,max=l[0];
for (i = 0;i < len;i++)
{
if (max < l[i])
max = l[i];
}
return max;
}
int main()
{
char s[100][1200];
int i=0,j=0,k=0,temp=0;
int l[100] = {0};
int max;
while ((scanf("%s",s[i])) != EOF)
{
// scanf ("%s",s[i]);
// if (s[i][0] == '#')
// break;
i++;
}
for (j = 0;j < i;j++)
{
while (s[j][k] != 0)
{
if (s[j][k] == 'A')
l[j]++;
k++;
}
k = 0;
}
max = Max(l,i);
for (j = 0;j <= max;j++)
{
for (k = 0;k < i;k++)
{
if (l[k] == temp)
printf ("%s\n",s[k]);
}
temp++;
}
return 0;
}
来源:http://acm.njupt.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=1023