沐沐Mnn 2019-04-28 12:08 采纳率: 72.7%
浏览 521
已采纳

C++编程填空问题:Three Sum

描述

给出一列备选整数,请问能否在其中选出三个(不能重复选取),使得它们的和等于一个给定数字呢?

#include<cstdio>
#include<cstring>
#include<set>
using namespace std;

multiset<int> s;
int a[5000 + 5];

int main() {
    int n, T, k;
    scanf("%d", &T);
    while (T--) {
        s.clear();
        scanf("%d", &n);
        for (int i = 0; i < n; i ++) {
            scanf("%d", a + i);
            s.insert(a[i]);
        }
        bool flag = false;
        scanf("%d", &k);
        for (int i = 0; i < n; i ++) {
            for (int j = i + 1; j < n; j ++) {
                int target = k - a[i] - a[j], min_count = 1;
// 在此处补充你的代码
}
            if (flag) break;
        }
        puts(flag? "Yes": "No");
    }
}
输入
输入包括多组测试数据。第一行一个整数T(1<=T<=20),表示测试数据数量。
接下来T组测试数据分别输入,对于每组测试数据,第一行一个整数n(1<=n<=1000),表示给出备选数字的个数;第二行n个用空格隔开的整数ai(-3*10^8<=ai<=3*10^8),表示备选数字列表;第三行一个整数k(-10^9<=k<=10^9),表示希望组合的数字。

输出
对于每组测试数据输出一行答案,如果能够选出三个数合成k,请输出"Yes"(不含引号),否则输出"No".

样例输入

4
10
1 2 3 4 5 6 7 8 9 10
8
10
1 2 3 4 5 6 7 8 9 10
5
4
1 1 1 1
3
4
1 2 9 10
4

样例输出

Yes
No
Yes
No

http://cxsjsx.openjudge.cn/2018midexamcloze/A/

  • 写回答

1条回答 默认 最新

  • threenewbee 2019-04-28 13:08
    关注
    // Q759051.cpp : Defines the entry point for the console application.
    //
    
    #include "stdafx.h"
    
    
    #include<cstdio>
    #include<cstring>
    #include<set>
    using namespace std;
    
    multiset<int> s;
    int a[5000 + 5];
    
    int main() {
        int n, T, k;
        scanf("%d", &T);
        while (T--) {
            s.clear();
            scanf("%d", &n);
            for (int i = 0; i < n; i ++) {
                scanf("%d", a + i);
                s.insert(a[i]);
            }
            bool flag = false;
            scanf("%d", &k);
            for (int i = 0; i < n; i ++) {
                for (int j = i + 1; j < n; j ++) {
                    int target = k - a[i] - a[j], min_count = 1;
    // 在此处补充你的代码
                    for (int l = j + 1; l < n; l++)
                    {
                        if (a[l] == target) { flag = true; break; }
                    }
                }
                if (flag) break;
            }
            puts(flag? "Yes": "No");
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建