


阅读理解题,解题思路是,统计每一列出现次数最多的字母,多种情况的按字典序选取,然后,每一列遍历的时候顺便记录一下有多少个不同的,也就是行数减去最多字母的数量。
#include <cstdio>
#include <iostream>
#include <string>
#include <string.h>
#include <algorithm>
using namespace std;
int main()
{
int cas,n,m,i,j,len;
int num_zm[30],out,tm;
char str[55][1005];
char out1[1005];
int max_num;
cin>>cas;
while(cas--)
{
// strcpy(out1, "");
len=0;//答案位置
out=0;//变化次数
cin>>n>>m;
for(i=0;i<n;i++)
cin>>str[i];
for(i=0;i<m;i++)
{
memset(num_zm,0,sizeof(num_zm));
max_num=0;//用于记录最大
for(j=0;j<n;j++)
{
num_zm[int(str[j][i]-'A')]++;
tm=num_zm[int(str[j][i]-'A')];//临时大小
if(tm>max_num)//对比
{
out1[len]=str[j][i];//保存答案
max_num=tm;
}
else if(tm==max_num)//
{
if(str[j][i]<out1[len])
out1[len]=str[j][i];
}
}
out+=n-max_num;
len++;
}
for(i=0;i<m;i++)
{
cout<<out1[i];
}
cout<<endl;
cout<<out<<endl;
}
return 0;
}

本文介绍了一种解决特定阅读理解题目的算法实现。通过统计每列中出现最频繁的字母并记录不同字母数量来确定答案及变化次数。适用于处理由大写字母组成的矩阵型数据。
409

被折叠的 条评论
为什么被折叠?



