2016校招编程题<一>
2015-09-27 15:19
375 查看
一个长度为N的数组中包含正数,负数和0,请实现一个函数找出最长和为零的连续子数组。
输入:所有数组元素在一行,空格隔开
输出:所有数组元素在一行,空格隔开
输入样例:1 2 3 4 -1 -2 -4 -3 1 2
输出样例:1 2 3 4 -1 -2 -4 -3
输入:所有数组元素在一行,空格隔开
输出:所有数组元素在一行,空格隔开
输入样例:1 2 3 4 -1 -2 -4 -3 1 2
输出样例:1 2 3 4 -1 -2 -4 -3
<span style="font-size:18px;">#include <iostream> #include <vector> #include <string> using namespace std; int main() { string str; getline(cin, str); vector<int> arr; vector<int> sum; int sumIndex = 0; sum.push_back(0); int index = 0; int nextIndex = 0; int n; string tmp; while(index != -1) { if(index == 0) { nextIndex = str.find(' ', index); tmp = str.substr(index, nextIndex-index); }else{ nextIndex = str.find(' ', index+1); tmp = str.substr(index+1, nextIndex-index-1); } int itemp = std::atoi(tmp.c_str()); arr.push_back(itemp); n = itemp + sum[sumIndex]; sum.push_back(n); sumIndex++; index = nextIndex; } int minIndex = 0; int maxIndex = 0; int maxLen = 0; for (int i = 0; i < sum.size(); i++) { for (int j = sum.size()-1; j > i + maxLen; j--) { if(sum[i] == sum[j]) { maxLen = j - i; minIndex = i; maxIndex = j; } } } for (int i = minIndex; i < maxIndex; i++) { cout << arr[i] << ' '; } return 0; } </span>
相关文章推荐
- 爬取淘宝MM图片
- ASP.NET Web API 异常日志记录
- 结对编程杂谈
- 自己觉得学习Java中比较有趣的小练习
- C#读写INI文件的方法
- Java基础知识强化100:jsp和servlet有什么区别
- java匿名内部类
- ASP.NET MVC 2右键菜单和简单分页实例讲解
- AlgorithmsI Programming Assignment 1: PercolationStats.java
- 黑马程序员——C语言基础---分支结构
- 黑马程序员——C语言日志——宏定义#define
- Java中常量和静态变量区别详解
- 停车场管理系统界面设计(Net Beans)用到的代码
- NetBeans使用技巧
- SSH整合(二)——利用Spring来装配Action类
- SSH整合(二)——利用Spring来装配Action类
- java的四个访问控制符
- hadoop编程技巧(6)---处理大量的小型数据文件CombineFileInputFormat申请书
- asp.net分页功能实现
- 停车场管理系统主要方法代码