题目描述
又来到了四年一度的主席竞选大赛,然后有n个候选人,编号分别是从1-n,现在需要你统计出票数最多的候选人是谁
输入
输入n
然后依次是n行
下面第几行就代表第几个候选人的票数
输出
输出最多票数的候选人编号以及票数
样例输入
5
98765
12365
87954
1022356
985678
样例输出
4
1022356
提示
票数可能会达到100位数字
n<=20
尚未达到要求的代码:
#include<stdio.h>
int main()
{
int a,d[20],m=0;
char k;
int bi(int a[],int b,int t,int d[][200]);
int b[100][200];
scanf("%d",&a);
getchar();
for(int i=0,j;i<a;i++)
{
for(j=1;;j++)
{
scanf("%c",&k);
if(k=='\n')break;
b[i][j]=k-'0';
}
b[i][0]=j-1;
}
int t=b[0][0];
for(int i=0,k=0;i<2;i++)
{
if(!i){for(int j=1;j<a;j++)
{
if(b[j][0]>t)t=b[j][0];
}}
if(i){for(int j=0;j<a;j++)
{
if(b[j][0]==t)d[k++]=j;
}
m=k;}
}
//for(int i=0;i<a;i++)printf("%d ",b[i][0]);
int e=bi(d,0,m,b);
printf("%d\n",e+1);
for(int i=1;i<=b[e][0];i++)
{
printf("%d",b[e][i]);
}
return 0;
}
int bi(int a[],int b,int t,int d[][200])
{
int c[20],m;
for(int i=0,k=0;i<2;i++)
{
int t1=d[a[0]][b];
if(!i){for(int j=1;j<t;j++)
{
if(d[a[j]][b]>t1)t1=d[a[j]][b];
}}
if(i){for(int j=0;j<t;j++)
{
if(t1==d[a[j]][b]){c[k++]=a[j];}
}
m=k;}
}
//printf("%d ",c[0]);
if(m==1)return c[0];
else bi(c,b+1,m,d);
}
题目描述
周老师无聊时乱写了 n 个区间,但处女座的他随后又想将 n 个区间整理合并,但他发现区间太多了,于是他想请你帮帮他
输入
每次测试输入多组数据(小于100组),对于每组输入数据:
第一行为 n ,代表 n 个区间
接下来 n 行,每行两个数 s , t 代表区间 [s,t]
0 < n < 15000
0 <= s <= t < 10000000
输出
第一行输出一个数字 q ,代表合并后剩余的区间个数
随后 q 行 按从小到大的顺序输出区间
样例输入
3
2 4
1 3
7 7
样例输出
2
1 4
7 7
写错的代码:
#include<stdio.h>
int a[10000005]={0},b[30000];
int main()
{
int n,m=0,j=0,t=0,k=0;
while(scanf("%d",&n)!=EOF){
for(int i=0;i<n;i++)
{
int x,y;
scanf("%d %d",&x,&y);
if(y>m)m=y;
a[x]++;
a[y+1]--;
}
for(int i=1;i<m+2;i++)
{
a[i]+=a[i-1];
}
for(int i=0;i<m+2;i++)
{
if(a[i]!=0){
if(!t){
b[j++]=i;
t=1;
}
}
else {
if(t){
b[j++]=i-1;
t=0;
k++;
}
}
}
printf("%d\n",k);
for(int i=0;i<k*2;i++)
{
printf("%d ",b[i]);
if((i+1)%2==0)printf("\n");
}
}
return 0;
}
声明:所用题皆来自刷题网,作者仅用来向组织反馈学习情况,无任何盈利行为。