ACM入门题目(北大ACM教材)

这个是自己经过一段时间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):"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值