厦门理工学院oj1553

Description

漂亮的涂鸭梨学姐买了一副字母纸牌,每张牌上有一个字母(只包含ABCD四个大写字母)。她把纸牌摆成M行N列后( 0 < M < 100 , 0 < N < 1024 ),她想统计一下“每列”出现次数最多的字母,注意:如果一列中有多个字母出现次数一样多,那么取ASCII码最小的那个字母。聪明的你(+_+)v,帮帮她吧。

Input

第一行为一个正整数T,表示有T组测试数据需要你求解。
紧接着,每组数据第一行为两个正整数M和N,M是行数,N是列数。然后是M行,表示M个字母串。

Output

输出为T行字符串,表示对应每组数据“每列出现次数最多字母”的统计结果。

Sample Input

2
2 4
ABCD
ADCB
4 5
ABBBA
ABBBB
ADDDB
CDDDB

Sample Output

ABCB
ABBBB

思路:

1.先将输入的字符保存到数组中,如主函数中for(i)循环所写

2.将保存下来的数组进行统计,然后进行比较谁的数量多,也就是compare函数中的for(l)循环和下面的if所写

#include<stdio.h>
char arr[100][100][1024];
int compare(int n,int k,int i)
{
	int b, l;
	static int A, B, C, D;
	for (b = 0; b <k; b++)
	{
		A = 0;
		B = 0;
		C = 0;
		D = 0;
		for (l = 0; l < n; l++)
			if (arr[i][l][b] == 'A')
				A++;
			else if (arr[i][l][b] == 'B')
				B++;
			else if (arr[i][l][b] == 'C')
				C++;
			else
				D++;
		if (A >= B && A >= C && A >= D)
			printf("A");
		else if (B >= C && B >= D && B > A)
			printf("B");
		else if (C >= D && C > A && C > B)
			printf("C");
		else
			printf("D");
	}
	return 0;
}
int main()
{
	static int a, i, n, sum,k;
	int l, s;
	
	scanf("%d", &a);
	for (i = 0; i < a; i++)
	{
		scanf("%d", &n);
		scanf("%d", &k);
		for (l = 0; l < n; l++)
			scanf("%s", arr[i][l]);
		compare(n, k, i);
		printf("\n");
	}
	
		
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值