UVA1368

时间:2022-07-28
本文章向大家介绍UVA1368,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

做题思路

对于每一个字符串的每一列,统计出现次数最多的字符。

做题方法

使用了两个二元组来表示字符串和字符的数量,分别表示第m行的字符串,和第n列的字符数量,最后再对m个字符串进行遍历,统计不同字符的个数。 因为是英文题目,自己对题意看的不透彻,题目输入的字符串只包含四个字符,我理解成了26个英文字母都存在,看来英文水平还需要继续提高。

代码

#include<iostream>
#include<cstring>
#include<cmath>
#define MAX_N 1005
int main()
{
	int T;
	scanf("%d",&T); 
	while(T--){
		int m,n;
		int cnt[MAX_N][26];
		char ch[55][MAX_N];
		char sum[MAX_N];
		for(int i=0;i<MAX_N;i++){
			for(int j=0;j<26;j++){
				cnt[i][j]=0;
			}
		}
		scanf("%d%d",&m,&n);
		for(int i=0;i<m;i++){
			scanf("%s",&ch[i]);
		}
		for(int i=0;i<m;i++){
			for(int j=0;j<n;j++){
				cnt[j][ch[i][j]-'A']++;
			}
		}
		for(int i=0;i<n;i++){
			int max=-1;
			int ans=0;
			for(int j=0;j<26;j++){
				if(max<cnt[i][j]){
					max=cnt[i][j];
					ans=j;
				}
				sum[i]=ans+'A';
			}
			printf("%c",ans+'A');
		}
		printf("n");
		int sum_ans=0;
		for(int i=0;i<m;i++){
			for(int j=0;j<n;j++){
				if(sum[j]!=ch[i][j]) sum_ans++;
			}
		}
		printf("%dn",sum_ans);
	}
	return 0;
}

继续努力!