第一题【问题描述】
从标准输入中读入两个字符集(不包含空格、制表符、回车换行等空白字符),字符集中的字符无序,且可能有重复字符。当两个字符集中字符完全相同(字符相同,字符若重复,重复个数也相同,顺序不一定相同),则两个字符集相同。编写一程序判断输入的两字符集是否相同:用1表示相同,用0表示不同。
【输入形式】
分别在两行上输入两个字符集(每个字符集中的字符个数不超过20,且第二个字符集输入结束后也有回车换行)。
【输出形式】
若两字符集相同,则输出1,否则输出0,然后按照从小到大的顺序分行输出第一个字符集中的字符及重复个数(以一个空格分隔)。
【样例输入1】
helloworld9
worldhello9
【样例输出1】
1
9 1
d 1
e 1
h 1
l 3
o 2
r 1
w 1
第二题【问题描述】
求二维整型数组的“最大点”。二维数组的“最大点”定义为:某个数是所在行的最大值,并且是所在列的最大值。注意:某行或某列上可能有多个“最大点”。
【输入形式】
从控制台读入二维数组。
第一行只有以空格分隔的两个正整数n和m(n,m<=10),n代表二维数组的行数,m代表二维数组的列数。
然后在后续n行上输入二维数组的元素,每行有m个以若干空格分隔的整数,代表二维数组在该行上的所有元素。
【输出形式】
向控制台输出二维数组的“最大点”,按行下标、列下标从小到大的顺序输出,每行一个,先输出“最大点”数值,再输出对应的行数、列数(行列都从1开始计数),以一个空格分隔。
【样例输入】
3 4
8 60 7 100
10 498 12 49
-71 132 4 85
【样例输出】
100 1 4
498 2 2
#include <stdio.h>
#include <string.h>
#include <string>
#include <math.h>
using namespace std;
int main()
{
int n;
char s1[100], s2[100];
int num[2][300]={0};
scanf("%s%s",&s1, &s2);
for(int i = 0; i < strlen(s1); i++)
{
num[0][s1[i]]++;
}
for(int i = 0; i < strlen(s2); i++)
{
num[1][s2[i]]++;
}
int flag = 0;
for(int i = 0; i < 300; i++)
{
if(num[0][i] != num[1][i])
{
flag++;
break;
}
}
if(flag)
printf("0\n");
else
printf("1\n");
for(int i = 0; i < 300; i++)
{
if(num[0][i])
printf("%c %d\n", i, num[0][i]);
}
return 0;
}#include <stdio.h>
#include <string.h>
#include <string>
using namespace std;
int main()
{
int n, m;
int i, j;
int a[20][20];
int maxx[20], maxy[20];
scanf("%d%d", &n, &m);
for(i = 0; i < n; i++)
for(j = 0; j < m; j++)
scanf("%d", &a[i][j]);
for(i = 0; i < n; i++)
{
int ma = a[i][0];
for(j = 0; j < m; j++)
{
if(a[i][j] > ma)
{
ma = a[i][j];
}
}
maxx[i] = ma;
}
for(j = 0; j < m; j++)
{
int ma = a[0][j];
for(i = 0; i < n; i++)
{
if(a[i][j] > ma)
{
ma = a[i][j];
}
}
maxy[j] = ma;
}
for(i = 0; i < n; i++)
{
for(j = 0; j < m; j++)
{
if(a[i][j] == maxx[i] && a[i][j] == maxy[j])
{
printf("%d %d %d\n", a[i][j], i+1, j+1);
}
}
}
return 0;
}
void count(char s[],char a[])
{for(int i=0;s[i];i++)a[s[i]]++;
}
int main()
{ char s1[25],s2[25],a[127]={0},b[127]={0};
int i;
scanf("%s",s1); count(s1,a);
scanf("%s",s2); count(s2,b);
for(i=32;i<128;i++)if(a[i]!=b[i])break;
printf("%d\n",i==128);
for(i=32;i<128;i++)
if(a[i])printf("%c %d\n",i,a[i]);
return 0;
}
#include <stdio.h>
int main()
{int m,n,i,j,a[10][10],m1[10],m2[10];
scanf("%d%d",&n,&m);
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d",&a[i][j]);
for(i=0;i<n;i++)m1[i]=a[i][0];
for(j=0;j<m;j++)m2[j]=a[0][j];
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{if(a[i][j]>m1[i])m1[i] =a[i][j];
if(a[i][j]>m2[j])m2[j] =a[i][j];
}
for(i=0;i<n;i++)
for(j=0;j<m;j++)
if(a[i][j]==m1[i]&&m1[i]==m2[j])printf("%d %d %d\n",a[i][j],i+1,j+1);
return 0;
}本回答被提问者和网友采纳