九度 题目1352:和为S的两个数字
来源:互联网 发布:seo外包收费标准 编辑:程序博客网 时间:2024/06/03 11:15
题目来源:http://ac.jobdu.com/problem.php?pid=1352
- 题目描述:
- 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
- 输入:
- 每个测试案例包括两行:第一行包含一个整数n和k,n表示数组中的元素个数,k表示两数之和。其中1 <= n <= 10^6,k为int第二行包含n个整数,每个数组均为int类型。
- 输出:
- 对应每个测试案例,输出两个数,小的先输出。如果找不到,则输出“-1 -1”
- 样例输入:
6 151 2 4 7 11 15
- 样例输出:
4 11
#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int MAXN = 1000010;bool FindNumbersSumequal(int* arr, int n, int &num1, int &num2, int S){ bool flag = false; if(arr == NULL || n < 1) return flag; int iStart = 0; int iEnd = n-1; while(iStart < iEnd) { int iCurNum = arr[iStart] + arr[iEnd]; if(iCurNum == S) { num1 = arr[iStart]; num2 = arr[iEnd]; flag = true; break; } else if(iCurNum < S) ++iStart; else --iEnd; } return flag;}int main(){ int n, k, num1, num2, i, arr[MAXN]; while(scanf("%d %d", &n, &k) != EOF) { num1 = num2 = -1; for(i = 0; i < n; ++i) scanf("%d", &arr[i]); if(FindNumbersSumequal(arr, n, num1, num2, k)) printf("%d %d\n", num1, num2); else printf("-1 -1\n"); } return 0;}
0 0
- 题目1352:和为S的两个数字-九度
- 九度 题目1352:和为S的两个数字
- 九度 题目1352:和为S的两个数字
- 九度 题目1352:和为S的两个数字
- 九度 题目1352:和为S的两个数字
- 【LeetCode】Two Sum && 【九度】题目1352:和为S的两个数字
- 九度_题目1352:和为S的两个数字
- 【剑指Offer面试编程题】题目1352:和为S的两个数字--九度OJ
- 九度OJ-题目1352:和为S的两个数字
- 九度OJ 1352 和为S的两个数字
- 九度OJ - 1352 - 和为S的两个数字
- 九度题目:和为S的两个数(1352)
- 九度笔记之 1352:和为S的两个数字
- 九度OJ 1352:和为S的两个数字 (查找)
- 剑指offer面试题目:和为 s 的两个数字
- 算法题目---和为s的两个数字vs和为s的连续正数序列
- 剑指offer-题目1352:和为S的两个数字 (2014.2.10)
- 和为S的两个数字
- 输入星期几输出对应的英文
- Normalized cuts and image segmentation
- Oracle11G 初始化脚本
- 【&&】 0525_1001.Scenic Popularity Astar第二战_Failed
- 物联网、云计算:重新定义企业安全
- 九度 题目1352:和为S的两个数字
- 第 11 章其它编程经验索引
- 深入理解db2缓冲池bufferpool
- VS2010环境下MFC使用DataGrid绑定数据源以及控件注册问题解决
- 循环保存在事务中为何只保存到最后一个对象
- OneToOne注解报异常:java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
- vlc-android代码分析一
- BIOS加载MBR到内存地址0x7C00的由来
- NSNotificationCenter发送通知