33,008
社区成员
发帖
与我相关
我的任务
分享
#include <stdlib.h>
#include <stdio.h>
int cmp(const void*a,const void*b)
{
return (*(int*)a)-(*(int*)b);//升序排列
}
int main()
{
int n,w[100],i;
scanf("%d",&n); getchar();
for(i=0;i<n;i++)
{
scanf("%d",&w[i]); getchar();
}
qsort(w,n,sizeof(int),cmp);
int t;
for(t=w[0]*n,i=1;i<n;i++)
{
printf("%d ",t);
if(w[i-1]==w[i]) //变w为严格递增序列,意义在于保证下面的else if语句正确
continue;
else if(t<w[i]*(n-i)) //面积处于递增阶段
t=w[i]*(n-i);
/*
else if(t>w[i]*(n-i)) //优化,截去面积的递减阶段以提高效率(不加则为穷举)
break;
加上这句就是对不了*/
}
printf("\n%d\n",t);
return 0;
}
for(t=w[0]*n,i=1;i<n;i++)
{
if(w[i-1]==w[i])
continue;
else if(t<w[i]*(n-i))
t=w[i]*(n-i);
else if(t>w[i]*(n-i))
continue;
}
#include <stdlib.h>
#include <stdio.h>
int cmp(const void*a,const void*b)
{
return (*(int*)a)-(*(int*)b);//升序排列
}
int main()
{
int n,w[100],i;
scanf("%d",&n); getchar();
for(i=0;i<n;i++)
{
scanf("%d",&w[i]); getchar();
}
qsort(w,n,sizeof(int),cmp);
int t;
for(t=w[0]*n,i=1;i<n;i++)
{
// printf("%d ",t);
if(w[i-1]==w[i]) //变w为严格递增序列,意义在于保证下面的else if语句正确
continue;
else if(t<w[i]*(n-i)) //面积处于递增阶段
t=w[i]*(n-i);
/*
else if(t>w[i]*(n-i)) //优化,截去面积的递减阶段以提高效率(不加则为穷举)
break;
加上这句就是对不了*/
}
printf("%d\n",t);
return 0;
}