一个西电的ACM竞赛题想到的 part2
来源:互联网 发布:数据分析 前景 编辑:程序博客网 时间:2024/05/17 02:01
程序如下, 详细信息参见part2部分。
#include <iostream>#include <vector>#include <algorithm>#include <fstream>#include <cstdlib>#include <string>using namespace std;void Count(vector<int> &myVec, int &Total, int Max);int main(){ int number; string filePath; int numberOfInstances; int Max; int Rings; cout << "please input your file path: " ; //ie, D:\\sample cin >> filePath; ifstream fin; fin.open(filePath.c_str()); if(fin.fail()) { cout << "sorry, fail to open" << endl; exit(1); } fin >> numberOfInstances; vector<int> vect1; for(int i = 0; i < numberOfInstances; i++) { fin >> Rings; fin >> Max; for(int i = 0; i < Rings; i++) { fin >> number; vect1.push_back(number); } int totalCount = 0; Count(vect1, totalCount, Max); cout << totalCount << endl; vect1.clear(); } fin.close(); return 0;}void Count(vector<int> &myVec, int & Total, int Max) { sort(myVec.begin(), myVec.end()); vector<int>::iterator mid; vector<int>::iterator low; vector<int>::iterator high; for(mid = myVec.begin() + 1; mid != myVec.end() -1 ; mid++) { high = mid + 1; // ie, high is always in the right of mid low = mid; while(low != myVec.begin()) { low--; for(high = mid + 1; high != myVec.end(); high++) { if(*low + *mid + *high >= Max) { Total++; } } } }}
最开始编写程序的时候, 出现如下错误:
编译的时候, 只打印一个52, 就结束了。 为什么呢, 因为第二个i 在循环的时候, 结束是值为8, 所以不会继续执行外层循环。 我修改了半天, 就是没找到。 原因或许是忽略了for中的控制循环的变量的scope。 所以需要重新在内存循环中重新声明: int i = 0, 第二个解决办法, 为了避免出现理解上的困难, 可以直接将内层循环的控制循环的变量改为j。 我在stackoverflow中发出了帮助帖子, 得到的解答如下:
这位大叔除了高速我需要学会真正的调试技术外, 还之处程序中的一些改进办法, 就是最后使用vector的时候清空内容的时候直接使用vect1.empty() 函数, 而不是一个个pop _back() 。。
0 0
- 一个西电的ACM竞赛题想到的 part2
- 一个西电的ACM竞赛题想到的 part1
- 一个西电的ACM竞赛题想到的 part3
- 排列组合的一个竞赛题
- 做杭电acm想到的
- ACM竞赛题之输出与7相关的数
- 由一个BUG想到的
- 从一个视频想到的
- 由一个bug想到的
- 看一个博士论文想到的
- 杭电ACM 2500 做一个正气的杭电人
- 昨天晚上做的西电ACM网站,我要全部抛弃掉,做一个更加大气的出来!
- 想到的.....
- 想到的
- 从一个气压计想到的[转]
- 突然想到学生项目的一个问题
- 又想到一个好玩的东西
- 想到一个做垃圾博客的方法
- iBATIS使用$和#的一些理解
- IO字符流
- jsp传值给servlet乱码问题
- 【Android SDK开发】各种Android Dialog创建及其监听事件实现
- Oracle EBS 术语解释-中文版
- 一个西电的ACM竞赛题想到的 part2
- Java中a=a+b 与 a+=b区别 以及和类型转换的关系
- IO序列输入输出流
- 百度地图之定位数据
- 兼容 谷歌、火狐、360系列浏览器的桌面通知(实用)
- UIScrollView
- 关于mysql的mysql"Access denied for user'root'@'IP地址'"
- iBATIS入门程序六大步详解
- poj_1974,最长回文字串manacher