<pre class="cpp" name="code">这是一道用一下二分的题 题意要先看懂 ,不要看错就行 就是先找最大值 最后要用二分跟他比较 这个 部分 要清楚 之前我做的时候就是这里over了。。。。
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;
int num[10000000];
int main()
{
int n,m,i,j;
while(scanf("%d %d",&n,&m)!=EOF)
{
int sum=0;
int sum1=0;
int aim=0;
int mi=0;
int k=0;
if(n==0&&m==0)
break;
num[0]=0;
for(i=1;i<=n;i++)
{
scanf("%d",&num[i]);
if(num[i]>m)
{
i--;
n--;
}
}
int nut=n+1;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
num[nut++]=num[i]+num[j];
}
}
sort(num,num+nut);
for(i=0;i<nut;i++)
{
sum=0,sum1=nut,aim=num[1],mi=0;
while(sum<sum1)
{
mi=(sum+sum1)/2;
if(num[mi]+num[i]<=m)
{
if(num[mi]+num[i]>=aim)
aim=num[i]+num[mi];
sum=mi+1;
}
else
sum1=mi;
}
}
k++;
printf("Case %d: %d\n\n",k,aim);
}
}
Greatest Number这是我用 c语言做的 用了个二分吧
最新推荐文章于 2024-06-11 21:43:51 发布
