dut oj 1039 求最小的 n个数不能组成的数字

来源:互联网 发布:apache 去掉index.php 编辑:程序博客网 时间:2024/05/28 15:20
记得这个题目也是在省赛前摧残了很久的。
给出n 然后给n个数 n个数可以组合形成 其他数字 比如有1 2就可以组成三
现在要问这n个数所不能组成的数字里最小的那个
正确解法就是排序
然后循环数组
从第一个开始 更新sum,sum是之前数字的和
如果sum+1>arr[i];
那么最小的不能组成的数字就是sum+1

这个题目有点类似二进制的思想。
#include<cstdio>#include<iostream>#include<algorithm>using namespace std;int arr[1005];int main(){    int i,n,sum=0;    scanf("%d",&n);    for(i=0;i<n;++i)    {        scanf("%d",&arr[i]);    }    sort(arr,arr+n);    for(i=0;i<n;++i)    {        if(sum+1<arr[i])        {            printf("%d\n",sum+1);            break;        }        sum+=arr[i];    }    if(i==n)    printf("%d\n",sum+1);    return 0;}


原创粉丝点击