输入格式: 输入在一行中给出序列中整数个数N(0
输出样例:3 4
我的代码:
#include
int main(void) {
int a[1000]={0};
int flag[1000]={0};
int copy[1000]={0};
int num,i,j,temp=0,max=0;
scanf("%d",&num);
for(i=0;i"%d",&a[i]);
for(i=0;i-1;i++){for(j=0;j-1;j++)
{if(a[j]1]){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}}}
for(i=0,j=0;i1])flag[j]++;
else {copy[j]=a[i];j++;}
}
for(j=0;j-1;j++){
if(flag[j]1])max=j+1;
}printf("%d %d",copy[max],flag[max]+1);
}
提示部分错误,sample等价有负数的答案错误
求问为什么会这样或者什么数据会有错误的答案
其实没有必要像你写的这么复杂。我写了一版,供你参考。 如果有帮助记得采纳。
#include <stdio.h>
#include <string.h>
int main() {
int n;
scanf("%d", &n);
int a[n];
int flag[n];
memset(flag, 1, sizeof(flag));
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
int count = 0, max_num = 0;
for (int i = 0 ; i < n; i++) {
if (!flag[i]) {
continue;
}
int c = 0;
for (int j = i; j < n; j++) {
if (a[i] == a[j]) {
flag[j] = 0;
c++;
}
}
if (c > count) {
count = c;
max_num = a[i];
}
}
printf("%d %d", max_num, count);
return 0;
}
#include <stdio.h>
int main()
{
int n[1000][2] = {0};
int num, i, j, temp = 0, max = 0;
scanf("%d", &num);
for (i = 0; i < num; i++)
{
scanf("%d", &temp);
for (j = 0; j < i; j++)
{
if (n[j][0] == temp)
{
n[j][1]++;
break;
}
}
if (i == j)
{
n[i][0] = temp;
n[i][1] = 1;
}
}
max = 0;
temp = n[0][1];
for (i = 1; i < num; i++)
{
if (n[i][1] > temp)
max = i;
}
printf("%d %d", n[max][0], n[max][1]);
}