Codejam 之 初章

来源:互联网 发布:linux 显示时区 cst 8 编辑:程序博客网 时间:2024/06/04 19:44
有段时间颇爱编程竞赛题,如Google发起的Codejam等。一者多见识些问题,二者时常写写C++代码,以免手生。子曰:学而时习之,不亦说乎。

Codejam还是不错,涉及到的知识范围较广,还可顺便练练英语阅读。不过竞赛毕竟是竞赛,有些东西还是可以模式化。比如它的输入与输出格式都不变,何不写一个模版代码文件处理输入输出?这样不但能更专心于如何解决问题,亦可节约时间。

以下是在下用过的代码:

 

//============================================================================// Name        : codejamtest2.cpp// Author      : festony// Version     :// Copyright   : // Description : Codejam test template source code//============================================================================#include <iostream>#include <fstream>#include <sstream>#include <cmath>#include <ctime>#include <cstdio>#include <cstdlib>#include <cstring>#include <string>#include <vector>#include <map>#include <set>#include <algorithm>using namespace std;static string process(int caseNum, fstream & in) {char buf[10240];string temp_str = "";string result = "";sprintf(buf, "Case #%d: %s\n", caseNum + 1, temp_str.c_str());result.append(buf);return result;}int main() {char buff[10240];while(true) {cout << "Input?";cin >> buff;if(buff[0] == 'n' || buff[0] == 'N') {break;}int caseNum = 0;fstream in("C:\\codejamtest\\testin.txt");fstream out("C:\\codejamtest\\testout.txt", ios_base::out | ios_base::trunc);in >> caseNum;in.ignore(256, '\n');char buf[10240];string result = "";for(int i=0; i<caseNum; i++) {result.append(process(i, in));}cout << result;out << result;in.close();out.close();}return 0;}


 或有谬误及可改进之处。输出会直接写入testout.txt,调试信息可用cout输出。

也许我该把codejam中常用的数据结构和算法也写出来?虽有重造轮子之嫌,但是多写写代码总不是坏事。