ACM: uva 10125 - Sumsets
2016-05-19 23:28
363 查看
Sumsets
Description
Given S, a set of integers, find the largest d such
that a + b + c = d where a, b, c, and d are distinct elements of
S.
Input
Several S, each consisting of a line containing an
integer 1 <= n <= 1000 indicating the
number of elements in S, followed by the elements of S, one per
line. Each element of S is a distinct integer between -536870912
and +536870911 inclusive. The last line of input contains 0.
Output
For each S, a single line containing d, or a single
line containing "no solution".
Sample Input
5
2 3 5 7 12
5
2 16 64 256 1024
0
Sample Output
12
no solution
题意: 在N个数的整数集合里面找出四个数, 满足a+b+c = d, 输出d, 否则输出 "no
solution"
解题思路:
1. 枚举即可.
代码:
#include
<cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
#define MAX 1005
int n;
int a[MAX];
int main()
{
// freopen("input.txt", "r", stdin);
int i, j, l, r, temp;
while(scanf("%d", &n) !=
EOF)
{
if(n == 0) break;
for(i = 0; i <
n; ++i)
scanf("%d",
&a[i]);
sort(a,
a+n);
bool flag = false;
int ans;
for(i = n-1; i
>= 0; --i)
{
for(j = n-1;
j >= 0; --j)
{
if(i
!= j)
{
temp
= a[i]-a[j];
for(l
= 0, r = j-1; l < r; )
{
if(a[l]+a[r]
== temp)
{
ans
= a[i];
flag
= true;
break;
}
if(a[l]+a[r]
> temp) r--;
else
l++;
}
if(flag)
break;
}
}
if(flag)
break;
}
if(flag)
printf("%d\n", ans);
else printf("no
solution\n");
}
return 0;
}
Description
Given S, a set of integers, find the largest d such
that a + b + c = d where a, b, c, and d are distinct elements of
S.
Input
Several S, each consisting of a line containing an
integer 1 <= n <= 1000 indicating the
number of elements in S, followed by the elements of S, one per
line. Each element of S is a distinct integer between -536870912
and +536870911 inclusive. The last line of input contains 0.
Output
For each S, a single line containing d, or a single
line containing "no solution".
Sample Input
5
2 3 5 7 12
5
2 16 64 256 1024
0
Sample Output
12
no solution
题意: 在N个数的整数集合里面找出四个数, 满足a+b+c = d, 输出d, 否则输出 "no
solution"
解题思路:
1. 枚举即可.
代码:
#include
<cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
#define MAX 1005
int n;
int a[MAX];
int main()
{
// freopen("input.txt", "r", stdin);
int i, j, l, r, temp;
while(scanf("%d", &n) !=
EOF)
{
if(n == 0) break;
for(i = 0; i <
n; ++i)
scanf("%d",
&a[i]);
sort(a,
a+n);
bool flag = false;
int ans;
for(i = n-1; i
>= 0; --i)
{
for(j = n-1;
j >= 0; --j)
{
if(i
!= j)
{
temp
= a[i]-a[j];
for(l
= 0, r = j-1; l < r; )
{
if(a[l]+a[r]
== temp)
{
ans
= a[i];
flag
= true;
break;
}
if(a[l]+a[r]
> temp) r--;
else
l++;
}
if(flag)
break;
}
}
if(flag)
break;
}
if(flag)
printf("%d\n", ans);
else printf("no
solution\n");
}
return 0;
}
相关文章推荐
- Java发展历史
- ACM: uva 10827 -&…
- ACM: uva 1325 -&n…
- Iwfu-贝塞尔曲线
- ACM: uva 11389 -&…
- ACM: LA 3266 -&nb…
- ACM: uva 1467 - Installations
- ACM: uva 1450 - Airport
- ACM: uva 1335 - Beijing Guards
- ACM: uva 1276 - Network
- Python - pyqt 和 opencv
- Python - 网络基础
- Python - 正则表达式指南
- Python - 基础知识3
- Python - 基础知识1
- Python - 基础知识2
- cug1702&&CCNU校赛J题 分块
- Jersey 2.22.2 官方文档第18章学习笔记
- [蓝桥杯]常用算法-递归法
- 兴趣学习: 人脸识别系统实现 …