ccf真题及答案.pdf
38页CCF 历年真题历年真题((C++实现实现)) 目录目录 CCF 历年真题(C++实现) . 1 2015 年 9 月 . 2 数列分段 . 2 日期计算 . 3 模板生成工具 . 4 2015 年 3 月 . 8 图像旋转 . 8 数字排序 . 10 节日 . 11 2014 年 12 月 . 14 门禁系统 . 14 Z 字形扫描 15 2014 年 9 月 . 18 相邻数对 . 18 画图 . 19 字符串匹配 . 22 2014 年 3 月 . 24 相反数 . 24 窗口 . 26 命令行选项 . 28 2013 年 12 月 . 32 出现次数最多的数 . 32 ISBN 号码 34 最大的矩形 . 35 2015 年年 9 月月 数列分段数列分段 试题编号: 201509-1 试题名称: 数列分段 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述问题描述 给定一个整数数列,数列中连续相同的最长整数序列算成一段,问数 列中共有多少段? 输入格式输入格式 输入的第一行包含一个整数 n,表示数列中整数的个数 第二行包含 n 个整数 a1, a2, …, an,表示给定的数列,相邻的整数之 间用一个空格分隔。
输出格式输出格式 输出一个整数,表示给定的数列有多个段 样例输入样例输入 8 8 8 8 0 12 12 8 0 样例输出样例输出 5 样例说明样例说明 8 8 8 是第一段,0 是第二段,12 12 是第三段,倒数第二个整数 8 是 第四段,最后一个 0 是第五段 评测用例规模与约定评测用例规模与约定 1 ≤ n ≤ 1000,0 ≤ ai ≤ 1000 答案参考(仅代表个人观点) # include using namespace std; int main(){ int a[1000],b,c=0,d; cinb; for(int i=0;ia[i]; } d=a[0]; c=1; for(int i=0;i using namespace std; int main(){ int monthDay[]={31,28,31,30,31,30,31,31,30,31,30,31}; int year; int day; int count; int month; cinyear; cinday; if(((year%4==0) } for(int i=0;i User {{ name }} {{ name }} Email: {{ email }} Address: {{ address }} name “David Beckham“ email “david@“ 样例输出样例输出 User David Beckham David Beckham Email: david@ Address: 评测用例规模与约定评测用例规模与约定 0 ≤ m ≤ 100 0 ≤ n ≤ 100 输入的模板每行长度不超过 80 个字符(不包含换行符)。
输入保证模板中所有以 {{ 开始的子串都是合法的标记,开始是两个左大括号 和一个空格,然后是变量名,结尾是一个空格和两个右大括号 输入中所有变量的值字符串长度不超过 100 个字符(不包括双引号) 保证输入的所有变量的名字各不相同 # include # include # include # include using namespace std; int main(){ int lineNum=0,varNum=0; vector content; string line; map varMap; cinlineNumvarNum; cin.ignore(); for(int i=0;i::value_type(line.substr(0,pos),line.substr(pos))); } for(int i=0;i=0 if(varMap.count(var)){ string result = varMap[var].substr(2,varMap[var].length()-3); content[i].replace(pos1,var.length()+6,result); }else{ content[i].replace(pos1,var.length()+6,““); } pos=pos1+var.length(); }else{ pos = content[i].length(); } }while(pos #include using namespace std; int main(){ int m,n; cinmn; typedef vector valVec; vector arr(m,vector(n,0)); for(int i=0;ivalue; arr[i][j]=value; } } for(int i=n-1;i=0;i--){ for(int j=0;j #include #include #include using namespace std; typedef pair PAIR; typedef map::value_type valType; struct CmpByValue{ bool operator()(const PAIR if(lhs.second == rhs.second){ result = lhs.first rhs.second; } return result; } }; int main(){ int n; cinn; int arr[1000] = {0}; map countMap; for(int i=0;ivalue; arr[i]=value; ++countMap[value]; } vector valueVector(countMap.begin(),countMap.end()); sort(valueVector.begin(),valueVector.end(),CmpByValue()); for (int i = 0; i != valueVector.size(); ++i) { cout using namespace std; int IsLeapYear(int y ) { if((y%4==0 else return 0; } int getTotalDay(int y,int m,int d) { int Totalday=0; int MonthDays[12]={0,31,28,31,30,31,30,31,31,30,31,30}; for(int i=1850;i2) Totalday=Totalday+IsLeapYear(y); return Totalday+d; } int main (){ int a,b,c,y1,y2; cinabcy1y2; int MonthDays[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; for(int i=y1;ic){ day = day+7-w+c; } if(IsLeapYear(i)){ MonthDays[2]=29; }else{ MonthDays[2]=28; } if(dayMonthDays[a]){ cout #include using namespace std; int main(){ int n; int record[1000]={0}; map analMap; cinn; for(int i=0;irecord[i]; ++analMap[record[i]]; record[i]=analMap[record[i]]; } for(int i=0;i #include using namespace std; int main(){ int n; cinn; typedef vector typeVec; vector arr(n,vector(n,0)); for(int i=0;ivalue; arr[i][j]=value; } } for(int i=1;i0;i--){ int temp=n-1; for(int j=n-i;j #include #include using namespace std; int main(){ int n; vector valueVec; int value; int count=0; cinn; for(int i=0;ivalue; valueVec.push_back(value); } sort(valueVec.begin(),valueVec.end()); for(int i=0;i #include #include #include using namespace std; void int2str(const int stream countMap; typedef map::value_type valType; stringstream stream; cinn; int ** values= new int*[n]; for(int i=0;ivalues[i][j]; } for(int a=values[i][0]+1;a #include #include #include #include using namespace std; void int2str(const int stream countMap; typedef map::value_type valType; stringstream stream; cinn; typedef vector typeVec; vector values(n,vector(4,0)); for(int i=0;ivalues[i][j]; } for(int a=values[i][0]+1;a #include #include #include using namespace std; int main(){ vector valVec; string search; int flag=0; int lineNum=0; string line; cinsearchflaglineNum; for(int i=0;iline; valVec.push_back(line); } for(int i=0;i #include using namespace std; int main(){ int n,count=0; map pluMap; map miuMap; typedef map::value_type valType; cinn; for(int i=0;ivalue; if(value0){ pluMap.insert(valType(value,1)); }else{ miuMap.insert(valType(value,1)); } } map::iterator iter=pluMap.begin(); map::iterator minIter=miuMap.begin(); int size = pluMap.size()-miuMap.size(); if(size0){ while(minIter!=miuMap.end()){ int s = minIter-first; if(pluMap.count(~(s - 1))){ count++; } ++minIter; } }else{ while(iter!=pluMap.end()){ int s = iter-first; if(miuMap.count(~s +1)){ count++; } ++iter; } } cout #include usi。





