UVA - 10125 Sumsets
2014-11-02 12:40
323 查看
题目大意:给出一个集合,问集合里面是否有满足d = a+ b + c最大d(a,b,c,d都是集合里面的数字)
解题思路:先排序,d从最大的给,a也从最大的给,b从比a小的给,c取最小值,如果满足a+b+c=d,即满足条件,如果a+b+c < d,则让c变大,如果 a+b+c>d,则让b变小,具体请看代码
解题思路:先排序,d从最大的给,a也从最大的给,b从比a小的给,c取最小值,如果满足a+b+c=d,即满足条件,如果a+b+c < d,则让c变大,如果 a+b+c>d,则让b变小,具体请看代码
#include<cstdio> #include<set> #include<algorithm> using namespace std; long long num[1005]; int a,b,c,d; int number; bool judge() { for(d = number - 1; d >= 0; d--) for(a = number - 1; a > 0; a--) for(b = a - 1, c = 0; b > c && a != d;) if(num[d] == num[a] + num[b] + num[c]) return true; else num[d] > num[a] + num[b] + num[c] ? c++:b--; return false; } int main() { while(scanf("%d",&number) != EOF && number) { for(int i = 0; i < number; i++) scanf("%lld",&num[i]); sort(num,num+number); if(judge()) printf("%lld\n",num[d]); else printf("no solution\n"); } return 0; }
相关文章推荐
- UVa 10125 Sumsets (折半枚举&二分查找)
- uva_10125_Sumsets( 二分 )
- UVA 10125 Sumsets(中途相遇法)
- uva 10125 Sumsets
- UVA - 10125 Sumsets(二分查找)
- UVA 10125 Sumsets .
- uva 10125 - Sumsets(技巧性枚举)
- uva 10125 - Sumsets
- uva 10125 - Sumsets好题
- Sumsets UVA - 10125(二分法)
- UVa 10125 Sumsets (中途相遇法)
- uva 10125 Sumsets(搜索)
- UVA 10125 - Sumsets(POJ 2549) hash
- UVA 10125 - Sumsets(POJ 2549) hash
- UVA - 10125 - Sumsets (暴力枚举 + STL)
- UVA - 10125 Sumsets (预处理 + 二分)
- UVA 10125 Sumsets——折半查找
- UVA 10125 Sumsets
- uva 10125 - Sumsets(a+b+c=d)
- UVA 10125 Sumsets