这个是自己经过一段时间A的题目,非抄书!然后也自己做了一个工程把它管理起来。
ACM.h 这个头文件主要是一些头文件映如以及一些ACM函数的定义
#include<iostream>
#include<fstream>
#include<vector>
#include<numeric>
#include<algorithm>
#include<string>
#include<sstream>
#include<set>
#include<map>
#include<deque>
#include<list>
#include<bitset>
#include<stack>
#include<queue>
#include<cmath>
#include<iomanip>
using namespace std;
//章节目录
void total_describe();
void part_two_describe();
void part_three_describe();
void part_four_describe();
void xinjian();
//第二章
void test();
void test_describe();
void vector_test();
void vector_describe();
void string_test();
void string_describe();
void set_test();
void set_describe();
void multiset_test();
void multiset_describe();
void map_test();
void map_describe();
void multimap_test();
void multimap_describe();
void deque_test();
void deque_describe();
void list_test();
void list_describe();
void bitset_test();
void bitset_describe();
void stack_test();
void stack_describe();
void queue_test();
void queue_describe();
void priority_queue_test();
void priority_queue_describe();
//第三章
void readANumber();
void readTwoNumber();
void jiecheng();
void dengbi();
void fibo();
void zuixiaogongyueshu();
void zuidagongbeishu();
void countAverage();
void SymmetricThreeDigit();
void tenTransTwo();
void listWanshu();
void peidui();
void SymmetricFiveDigit();
void sortForOneZero();
void symmetricStrSort();
void jidianSort();
void sortByOne();
//第四章
void QuickSum();
void IBMMinusOne();
void BinaryNumbers();
void Encoding();
void LookAndSay();
void Abbreviation();
void TheSevenPercentSolution();
void DigitalRoots();
void BoxofBricks();
void GeometryMadeSimple();
void ReverseText();
void WordReversal();
void ASimpleQuestionofChemistry();
void AddingReversedNumbers();
void ImageTransformation();
void BeautifulMeadow();
void DNASorting();
void DaffodilNumber();
void ErrorCorrection();
void MartianAddition();
void FatMouseTrade();
void ListtheBooks();
void HeadToHeadMatch();
void WindowsMessageQueue();
void LanguageofFatMouse();
void Palindromes();
void Palindromes2();
void RootoftheProblem();
void MagicSquare();
void SemiPrime();
void BeautifulNumber();
void PhoneList();
void Calendar();
void NoBrainer();
void QuickChange();
void TotalAmount();
void ElectricalOutlets();
void SpeedLimit();
void BeattheSpread();
void ChampionoftheSwordsmanship();
void Doubles();
void FileSearching();
void OldBill();
void DivisorSummation();
void EasierDoneThanSaid();
void LettheBalloonRise();
void TheHardestProblemEver();
void FibonacciAgain();
void ExcusesExcuses();
void LowestBit();
void LongestOrderedSubsequence();
//其他章节
struct.h 这里主要是一些辅助结构体的定义
struct myComp
{
bool operator()(const int &a,const int &b)
{
return a>b;//从小到大使用大于
}
};
struct Info
{
string name;
float score;
bool operator < (const Info &a) const
{
//小到大
return score > a.score;
}
};
struct myCompForZeroOne
{
//括号的话,从小到大是小于
bool operator()(const string &s1,const string &s2)
{
if(s1.size()!=s2.size())return s1.size()<s2.size();
int s1_count=count(s1.begin(),s1.end(),'1');
int s2_count=count(s2.begin(),s2.end(),'1');
if(s1_count!=s2_count)return s1_count<s2_count;
return s1<s2;//直接的ASCII的比较
}
};
struct strComp
{
//括号的话,从小到大是小于
bool operator()(const string &s1,const string &s2)
{
if(s1.size()!=s2.size())return s1.size()<s2.size();
return s1<s2;//直接的ASCII的比较
}
};
struct strCompTwo
{
//括号的话,从小到大是小于
bool operator()(const string &s1,const string &s2)
{
int s1_count=count(s1.begin(),s1.end(),'1');
int s2_count=count(s2.begin(),s2.end(),'1');
if(s1_count!=s2_count)return s1_count<s2_count;
}
};
struct student
{
string name;
vector<float> score;
float ave;
};
struct jidian_Sort
{
bool operator()(const student &stu1,const student &stu2)
{
if(stu1.ave!=stu2.ave)return stu1.ave > stu2.ave;
return stu1.name<stu2.name;
}
};
struct DNA
{
string dnalist;
int sum;
};
struct DNA_sort
{
bool operator()(const DNA &dna1,const DNA &dna2)
{
return dna1.sum<dna2.sum;
}
};
struct Trade
{
double F;
double A;
double bi;
};
struct Book
{
string name;
int year;
double price;
};
struct order
{
string name;
int parameter;
int priority;
};
struct order_sort
{
bool operator()(const order &o1,const order &o2)
{
return o1.priority<o2.priority;
}
};
struct cal_info
{
short int year;
short int month;
short int day;
short int week;
};
struct excuse
{
string str;
int count;
};
struct longxulie
{
int maxlen;
int num;
};
globalVar.h 这里主要是一些全局变量的声明
//全局变量的声明
int m[500000];/*北大ACM第4章43题*/
int v[1000000];/*北大ACM第4章47题*/
function.h 一些辅助函数的声明
#include"struct.h"
bool Comp(const int &a,const int &b);
string convertToString(double x);
string convertToInt(int x);
double convertFromString(string s);
int convertFromInt(string x);
void returnTwo();
void readDescribe(string str);
string cal_Path(string str1,string str2);
int gcd(int num1,int num2);
bool isPrime(int num);
bool listWanshu_single(int num);
bool symmetricStr(const string s);
void cal_stuAve(student &stu,vector<int> v);
int cal_sort(string s);
bool Comp_trade(const Trade &t1,const Trade &t2);
bool Comp_Book_Name(const Book &b1,const Book &b2);
bool Comp_book_Year(const Book &b1,const Book &b2);
bool Comp_book_Price(const Book &b1,const Book &b2);
vector<int> pt(int a,int b);
bool runnian(short int year);
string string_plus(string s1,string s2);
bool CompEx(const excuse &e1,const excuse &e2);
bool Compxulie(const longxulie &l1,const longxulie &l2);
ACM.cpp
主函数
#include"ACM.h"
#include"function.h"
int main()
{
total_describe();
return 0;
}
content.cpp 工程目录的设计
#include"ACM.h"
#include"function.h"
void total_describe()
{
cout<<"******************************************"<<endl;
cout<<"*第二章 C++ STL泛型编程 *"<<endl;
cout<<"*第三章 ACM程序设计基础 *"<<endl;
cout<<"*第四章 ACM程序设计实战 *"<<endl;
cout<<"******************************************"<<endl;
cout<<"请输入对应的章节编号进入相应的章节【退出系统请输入0】:"<<endl;
//
int num;
cin>>num;
while(num!=0&&num!=2&&num!=3&&num!=4){
cout<<"编号不存在"<<endl;
cout<<"请输入对应的章节编号进入相应的章节【退出系统请输入0】:"<<endl;
cin>>num;
}
switch(num){
case 0:exit(0);
case 2:part_two_describe();break;
case 3:part_three_describe();break;
case 4:part_four_describe();break;
}
}
void part_two_describe()
{
cout<<"******************************************"<<endl;
cout<<"* 第二章 C++ STL泛型编程 *"<<endl;
cout<<"******************************************"<<endl;
cout<<"*(1) 一个简单的测试案例 *"<<endl;
cout<<"*(2) vector向量容器 *"<<endl;
cout<<"*(3) string基本字符系列容器 *"<<endl;
cout<<"*(4) set集合容器 *"<<endl;
cout<<"*(5) mutiset多种集合容器 *"<<endl;
cout<<"*(6) map映照容器 *"<<endl;
cout<<"*(7) mutimap多重映照容器 *"<<endl;
cout<<"*(8) deque双端队列容器 *"<<endl;
cout<<"*(9) list双向链表容器 *"<<endl;
cout<<"*(10)bitset位集合容器 *"<<endl;
cout<<"*(11)stack堆栈容器 *"<<endl;
cout<<"*(12)queue队列容器 *"<<endl;
cout<<"*(13)priority_queue优先队列容器 *"<<endl;
cout<<"******************************************"<<endl;
cout<<"请输入对应的编号进入相应的题目(返回上级输入0):"<<endl;
int num;
cin>>num;
while(num!=0&&num!=1&&num!=2&&num!=3&&num!=4&&num!=5&&num!=6&&num!=7&&num!=8&&num!=9&&num!=10&&num!=11&&num!=12&&num!=13){
cout<<"编号不存在"<<endl;
cout<<"请输入对应的编号进入相应的题目(返回上级输入0):"<<endl;
cin>>num;
}
switch(num){
case 0:total_describe();break;
case 1:test();break;
case 2:vector_test();break;
case 3:string_test();break;
case 4:set_test();break;
case 5:multiset_test();break;
case 6:map_test();break;
case 7:multimap_test();break;
case 8:deque_test();break;
case 9:list_test();break;
case 10:bitset_test();break;
case 11:stack_test();break;
case 12:queue_test();break;
case 13:priority_queue_test();break;
}
}
void part_three_describe()
{
bool flag=true;
while(flag)
{
cout<<"******************************************"<<endl;
cout<<"* 第三章 ACM程序设计基础 *"<<endl;
cout<<"******************************************"<<endl;
cout<<"*(1) 读入一个参数 *"<<endl;
cout<<"*(2) 读入两个参数 *"<<endl;
cout<<"*(3) 1!到n!的和 *"<<endl;
cout<<"*(4) 等比数列 *"<<endl;
cout<<"*(5) 斐波那契数 *"<<endl;
cout<<"*(6) 最大公约数 *"<<endl;
cout<<"*(7) 最小公倍数 *"<<endl;
cout<<"*(8) 平均数 *"<<endl;
cout<<"*(9) 对称三位素数 *"<<endl;
cout<<"*(10)十进制转化为二进制 *"<<endl;
cout<<"*(11)列出完数 *"<<endl;
cout<<"*(12)12!的配对 *"<<endl;
cout<<"*(13)五位数以内的对称素数 *"<<endl;
cout<<"*(14)01串排序 *"<<endl;
cout<<"*(15)排列对称串 *"<<endl;
cout<<"*(16)按绩点排名 *"<<endl;
cout<<"*(17)按1的个数排序 *"<<endl;
cout<<"******************************************"<<endl;
cout<<"请输入对应的编号进入相应的题目(返回上级输入0):"<<endl;
int num;
cin>>num;
while(num!=0&&num!=1&&num!=2&&num!=3&&num!=4&&num!=5&&num!=6&&num!=7&&num!=8&&num!=9&&
num!=10&&num!=11&&num!=12&&num!=13&&num!=14&&num!=15&&num!=16&&num!=17
){
cout<<"编号不存在"<<endl;
cout<<"请输入对应的编号进入相应的题目(返回上级输入0):"<<endl;
cin>>num;
}
switch(num){
case 0:total_describe();break;
case 1:readANumber();break;
case 2:readTwoNumber();break;
case 3:jiecheng();break;
case 4:dengbi();break;
case 5:fibo();break;
case 6:zuixiaogongyueshu();break;
case 7:zuidagongbeishu();break;
case 8:countAverage();break;
case 9:SymmetricThreeDigit();break;
case 10:tenTransTwo();break;
case 11:listWanshu();break;
case 12:peidui();break;
case 13:SymmetricFiveDigit();break;
case 14:sortForOneZero();break;
//case 3:part_three_describe();break;
//case 4:part_four_describe();break;
}
}
total_describe();
}
void part_four_describe()
{
bool flag=true;
while(flag)
{
cout<<"******************************************"<<endl;
cout<<"* 第四章 ACM程序设计实战 *"<<endl;
cout<<"******************************************"<<endl;
cout<<"*(1)Quicksum *"<<endl;
cout<<"*(2)IBM Minus One *"<<endl;
cout<<"*(3)Binary Numbers *"<<endl;
cout<<"*(4)Encoding *"<<endl;
cout<<"*(5)Look and Say *"<<endl;
cout<<"*(6)Abbreviation *"<<endl;
cout<<"*(7)The Seven Percent Solution *"<<endl;
cout<<"*(8)Digital Roots *"<<endl;
cout<<"*(9)Box of Bricks *"<<endl;
cout<<"*(10)Geometry Made Simple *"<<endl;
cout<<"*(11)Reverse Text *"<<endl;
cout<<"*(12)Word Reversal* *"<<endl;
cout<<"*(13)A Simple Question of Chemistry *"<<endl;
cout<<"*(14)Adding Reversed Numbers *"<<endl;
cout<<"*(15)Image Transformation *"<<endl;
cout<<"*(16)Beautiful Meadow *"<<endl;
cout<<"*(17)DNA Sorting *"<<endl;
cout<<"*(18)Daffodil Number *"<<endl;
cout<<"*(19)Error Correction *"<<endl;
cout<<"*(20)Martian Addition *"<<endl;
cout<<"*(21)FatMouse’ Trade *"<<endl;
cout<<"*(22)List the Books *"<<endl;
cout<<"*(23)Head-to-Head Match *"<<endl;
cout<<"*(24)Windows Message Queue *"<<endl;
cout<<"*(25)Language of FatMouse *"<<endl;
cout<<"*(26)Palindromes *"<<endl;
cout<<"*(27)Root of the Problem *"<<endl;
cout<<"*(28)Magic Square *"<<endl;
cout<<"*(29)Semi-Prime *"<<endl;
cout<<"*(30)Beautiful Number *"<<endl;
cout<<"*(31)Phone List *"<<endl;
cout<<"*(32)Calendar *"<<endl;
cout<<"*(33)No Brainer *"<<endl;
cout<<"*(34)Quick Change *"<<endl;
cout<<"*(35)Total Amount *"<<endl;
cout<<"*(36)Electrical Outlets *"<<endl;
cout<<"*(37)Speed Limit *"<<endl;
cout<<"*(38)Beat the Spread! *"<<endl;
cout<<"*(39)Champion of the Swordsmanship *"<<endl;
cout<<"*(40)Doubles *"<<endl;
cout<<"*(41)File Searching *"<<endl;
cout<<"*(42)Old Bill *"<<endl;
cout<<"*(43)Divisor Summation *"<<endl;
cout<<"*(44)Easier Done Than Said? *"<<endl;
cout<<"*(45)Let the Balloon Rise *"<<endl;
cout<<"*(46)The Hardest Problem Ever *"<<endl;
cout<<"*(47)Fibonacci Again *"<<endl;
cout<<"*(48)Excuses, Excuses! *"<<endl;
cout<<"*(49)Lowest Bit *"<<endl;
cout<<"*(50)Longest Ordered Subsequence *"<<endl;
cout<<"******************************************"<<endl;
cout<<"请输入对应的编号进入相应的题目(返回上级输入0):"