1.标题:贪吃蛇长度

小明在爷爷的私人收藏馆里找到一台老式电脑。居然没有图形界面,只能用控制台编程。
经过小明的一阵摸索,神奇地设计出了控制台上的贪食蛇游戏。

如上图,是游戏时画面截图。
    其中,H表示蛇头,T表示蛇尾。#表示蛇的身体,@表示身体交叉重叠的地方。
    你能说出现在的贪吃蛇长度是多少吗?

其实,只要数出#的数目算1,数出@的数目,算2,再加上头尾各算1就计算好了。

人工数一下?太累眼睛了,聪明的你为什么不让计算机帮忙呢?

本题的要求就是: 请填写上图中贪食蛇的长度是多少?

注意:需要提交的是一个整数,不要添加任何多余内容(比如说明或注释)

不知道为什么,读入的时候得99行才能刚好接收完数据(实际不是只有20行吗……),欢迎各位知情大佬留言解答
#include<iostream>
#include<cstring>
using namespace std;
char mp[100][65];
int main(){int cnt=0;for(int i=0;i<99;i++)scanf("%s",mp[i]);for(int i=0;i<99;i++)for(int j=0;j<65;j++){if(mp[i][j]=='H'||mp[i][j]=='T'||mp[i][j]=='#') cnt++;else if(mp[i][j]=='@') cnt+=2; }cout<<cnt;return 0;
}
可是这样读入就可以,这是为什么捏……
#include<iostream>
#include<cstring>
using namespace std;
char mp[100][65];
int main(){int cnt=0;for(int i=0;i<20;i++)for(int j=0;j<51;j++)scanf("%c",&mp[i][j]);for(int i=0;i<20;i++)for(int j=0;j<51;j++){if(mp[i][j]=='H'||mp[i][j]=='T'||mp[i][j]=='#') cnt++;else if(mp[i][j]=='@') cnt+=2; }cout<<cnt;return 0;
}
引进壮狗的做法丰富一下
#include<iostream>
#include<string>
using namespace std;
int main() {int cnt=0;string s;while(getline(cin,s)) {for(int i=0;i<s.size();i++)if(s[i]=='#'||s[i]=='H'||s[i]=='T') cnt++;else if(s[i]=='@') cnt+=2;cout<<cnt<<endl;}return 0;
}

2.标题:兴趣小组(桶排思想)

为丰富同学们的业余文化生活,某高校学生会创办了3个兴趣小组
(以下称A组,B组,C组)。
每个小组的学生名单分别在【A.txt】,【B.txt】和【C.txt】中。
每个文件中存储的是学生的学号。

由于工作需要,我们现在想知道:
    既参加了A组,又参加了B组,但是没有参加C组的同学一共有多少人?

请你统计该数字并通过浏览器提交答案。

注意:答案是一个整数,不要提交任何多余的内容。

--------------------

笨笨有话说:
    哇塞!数字好多啊!一眼望过去就能发现相同的,好像没什么指望。
不过,可以排序啊,要是每个文件都是有序的,那就好多了。

歪歪有话说:
    排什么序啊,这么几行数字对计算机不是太轻松了吗?
    我看着需求怎么和中学学过的集合很像啊.....

A:

12894792, 92774113, 59529208, 22962224, 02991600, 83340521, 87365045, 
40818286, 16400628, 39475245, 55933381, 76940287, 61366748, 95631228, 
17102313, 50682833, 61562613, 87002524, 83062019, 51743442, 61977890, 
32010762, 69680621, 87179571, 81761697, 32364296, 07833271, 36198035, 
26588918, 84046668, 43059468, 73191775, 56794101, 00454780, 11141030, 
10008994, 35072237, 44945158, 53959980, 75758119, 18560273, 35801494, 
42102550, 22496415, 03981786, 34593672, 13074905, 07733442, 42374678, 
23452507, 98586743, 30771281, 17703080, 52123562, 05898131, 56698981, 
90758589, 18238802, 18217979, 04511837, 75682969, 31135682, 55379006, 
42224598, 98263070, 40228312, 28924663, 11580163, 25686441, 45944028, 
96731602, 53675990, 03854194, 14858183, 16866794, 40677007, 73141512, 
32317341, 56641725, 43123040, 15201174, 62389950, 72887083, 76860787, 
61046319, 06923746, 17874548, 46028629, 10577743, 48747364, 05328780, 
59855415, 60965266, 20592606, 14471207, 70896866, 46938647, 33575820, 
53426294, 56093931, 51326542, 94050481, 80114017, 33010503, 72971538, 
22407422, 17305672, 78974338, 93209260, 83461794, 41247821, 26118061, 
10657376, 42198057, 15338224, 50284714, 32232841, 26716521, 76048344, 
23676625, 62897700, 69296551, 59653393, 38704390, 48481614, 69782897, 
26850668, 37471053, 88720989, 51010849, 94951571, 60024611, 29808329, 
70377786, 13899299, 09683688, 58218284, 46792829, 97221709, 45286643, 
48158629, 57367208, 26903401, 76900414, 87927040, 09926730, 01508757, 
15101101, 62491840, 43802529,

B:

44894050, 34662733, 44141729, 92774113, 99208727, 91919833, 23727681, 
10003409, 55933381, 54443275, 13584702, 96523685, 50682833, 61562613, 
62380975, 20311684, 93200452, 23101945, 42192880, 28992561, 18460278, 
19186537, 58465301, 01111066, 62680429, 23721241, 20277631, 91708977, 
57514737, 03981786, 81541612, 07346443, 93154608, 19709455, 37446968, 
17703080, 72378958, 66200696, 30610382, 89586343, 33152171, 67040930, 
35696683, 63242065, 99948221, 96233367, 52593493, 98263070, 01418023, 
74816705, 89375940, 58405334, 96731602, 84089545, 16866794, 94737626, 
01673442, 70548494, 13638168, 08163691, 11106566, 64375392, 40267902, 
00897705, 56447313, 54532235, 94738425, 66642634, 83219544, 40546096, 
66924991, 20592606, 96037590, 73434467, 70896866, 91025618, 57892091, 
08487641, 32500082, 84412833, 23311447, 38380409, 79957822, 72971538, 
69645784, 91863314, 73099909, 93209260, 83461794, 81378487, 30423273, 
22233715, 32232841, 26716521, 03511221, 29196547, 58263562, 56233305, 
52547525, 55812835, 87253244, 52484232, 80837360, 94098464, 52028151, 
53267501, 66381929, 84381316, 59788467, 09683688, 67082008, 71605255, 
80654064, 21434307, 45286643, 76556656, 82465821, 57367208, 79218980, 
48460468, 59170479, 46046391, 43043164, 96544490, 83340521, 70837892, 
18926791, 40818286, 28936302, 11489524, 51031183, 73860337, 13241219, 
09025448, 10718828, 76360986, 26031606, 76558053, 97726139, 46473415, 
48406387, 23625539, 86756012, 35164187, 49161302, 78082834, 35072237, 
08602486, 29815841, 56562216, 77684187, 81751704, 20160464, 50407962, 
27786415, 19893526, 00934129, 37759498, 52636463, 25666982, 43262852, 
38393436, 02581136, 29323250, 56950657, 05898131, 95286262, 75574581, 
54057961, 06703896, 90758589, 57782642, 34492535, 41919697, 06395464, 
10993500, 81212949, 34017532, 69569396, 99009936, 57129610, 67401593, 
71044018, 62076698, 29533873, 71936325, 86874388, 26545032, 35695544, 
30433724, 53127345, 72887083, 25390873, 63711546, 06923746, 27783723, 
33199575, 35929698, 16491251, 18276792, 62744775, 92096155, 06336570, 
56141974, 73007273, 31416832, 00171057, 64176982, 46938647, 58460388, 
69972026, 73724304, 27435484, 51568616, 15531822, 47788699, 11818851, 
41594694, 83561325, 43107163, 56965375, 10557343, 26118061, 74650126, 
90076467, 10657376, 49901436, 03425162, 61164599, 15797769, 05427896, 
14444084, 36795868, 18079449, 59653393, 72942548, 06763077, 33895610, 
94892653, 12085268, 65174140, 79567366, 23020126, 74290047, 13498869, 
21696323, 27724594, 54941003, 38229841, 07050068,

C:

13404901, 39952424, 47847739, 94939581, 13809950, 70966043, 11161555, 
17102313, 47079425, 50682833, 74154313, 61562613, 93200452, 37103342, 
18479435, 32502597, 36198035, 54210010, 73191775, 48358178, 85544503, 
05996766, 54651623, 52113220, 27465181, 23871783, 22496415, 54107041, 
65899605, 56528700, 82671109, 61176034, 42374678, 51612628, 63329997, 
56591652, 04552733, 12789324, 89586343, 51935014, 38611966, 43916409, 
70996050, 98263070, 01418023, 65345049, 21734275, 76846198, 71506230, 
00833171, 67128139, 41367555, 64769510, 44010700, 16475199, 93164325, 
09386162, 95324041, 80688223, 67629139, 79552617, 76219736, 50368644, 
45096021, 54972488, 63779011, 28862942, 73145521, 74078605, 66924991, 
12806850, 02171001, 70896866, 73434467, 08487641, 44415025, 32500082, 
84412833, 83896188, 52243759, 49191410, 38744339, 48079796, 44937032, 
06267501, 81866886, 38575984, 25978688, 78974338, 41247821, 12356966, 
64842303, 79127158, 02366944, 68000570, 12426275, 96409230, 00705972, 
08266503, 83820884, 08831807, 43273308, 23216105, 29196547, 95160161, 
05553537, 52182214, 32641346, 91553427, 24436506, 77433749, 01979664, 
52028151, 88985343, 01761499, 76203088, 63237368, 23405334, 59788467, 
09683688, 67755443, 29946533, 12053603, 00437479, 15200030, 45286643, 
93537527, 82465821, 57367208, 53899751, 15354933, 97760830, 68933762, 
80220545, 01892750, 39868288, 21524323, 69716610, 65083815, 78048499, 
03227391, 83340521, 87365045, 71720254, 51031183, 89168555, 08503028, 
37086236, 25103057, 87002524, 22808816, 80928090, 90741678, 15993372, 
99117082, 49938176, 21755083, 86903426, 87830263, 53959980, 75758119, 
59781354, 58679691, 25666982, 56307643, 47180521, 62776522, 78136608, 
44882734, 90758589, 08075999, 66303819, 23480347, 11580163, 87080118, 
18329165, 92514163, 89404632, 92377859, 03912329, 17499963, 59699979, 
79876366, 63894807, 37857001, 86003935, 90087123, 29433345, 80298948, 
61531153, 61046319, 37839841, 19421134, 48747364, 35196916, 62484573, 
59907079, 36845702, 21631642, 72739317, 26283700, 80114017, 76639390, 
29154110, 35159758, 47788699, 11818851, 56520669, 36396767, 36031167, 
83817428, 10657376, 90076467, 14676452, 11024560, 16327605, 76048344, 
14444084, 95452011, 99612346, 65172562, 84813675, 88618282, 38704390, 
27998014, 63859011, 33787505, 60024611, 16229880, 13899299, 35240335, 
29173227, 45036451, 66177893, 82658333, 43100730, 44520187, 74290047, 
85013538, 09926730, 27724594, 95148523, 20503000, 64390907, 26006953, 
98116293, 97457666, 29017396, 04634371, 70791589,

#include<iostream>
#include<cstring>
using namespace std;
int a[100000000],c[100000000];
int main(){int x,cnt=0;for(int i=1;i<=400;i++){scanf("%d,",&x);a[x]++;}for(int i=1;i<=250;i++){scanf("%d,",&x);c[x]++;}for(int i=0;i<100000000;i++)if(a[i]==2&&c[i]==0) cnt++;cout<<cnt;return 0;
}

3.标题:算式900(又是老朋友啦~)

小明的作业本上有道思考题:

看下面的算式:

(□□□□-□□□□)*□□=900

其中的小方块代表0~9的数字,这10个方块刚好包含了0~9中的所有数字。
  注意:0不能作为某个数字的首位。

小明经过几天的努力,终于做出了答案!如下:
(5012-4987)*36=900

用计算机搜索后,发现还有另外一个解,本题的任务就是:请你算出这另外的一个解。

注意:提交的格式需要与示例严格一致;
      括号及运算符号不要用中文输入法;
      整个算式中不能包含空格。

注意:机器评卷,不要填写任何多余的内容,比如说明文字。

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int a[10]= {0,1,2,3,4,5,6,7,8,9};
int main() {int n1,n2,n3;do {if(a[9]!=0&&a[5]!=0&&a[1]!=0) {n1=a[9]*1000+a[8]*100+a[7]*10+a[6];n2=a[5]*1000+a[4]*100+a[3]*10+a[2];n3=a[1]*10+a[0];if((n1-n2)*n3==900){printf("(%d-%d)*%d=900\n",n1,n2,n3);}}} while(next_permutation(a,a+10));return 0;
}

4.标题:魔方状态(这题不会做……)

二阶魔方就是只有2层的魔方,只由8个小块组成。
如图p1.png所示。

小明很淘气,他只喜欢3种颜色,所有把家里的二阶魔方重新涂了颜色,如下:

前面:橙色
右面:绿色
上面:黄色
左面:绿色
下面:橙色
后面:黄色

请你计算一下,这样的魔方被打乱后,一共有多少种不同的状态。

如果两个状态经过魔方的整体旋转后,各个面的颜色都一致,则认为是同一状态。

请提交表示状态数的整数,不要填写任何多余内容或说明文字。

5.标题: 杨辉三角(随机应变就好~)

杨辉三角也叫帕斯卡三角,在很多数量关系中可以看到,十分重要。

第0行:           1
第1行:          1 1
第2行:         1 2 1
第3行:        1 3 3 1
第4行:       1 4 6 4 1
....

两边的元素都是1, 中间的元素是左上角的元素与右上角的元素和。

我们约定,行号,列号都从0计数。
所以: 第6行的第2个元素是15,第3个元素是20

直观地看,需要开辟一个二维数组,其实一维数组也可以胜任。
如下程序就是用一维数组“腾挪”的解法。

// 杨辉三角的第row行,第col列 
long long f(int row, int col){
    if(row<2) return 1;
    if(col==0) return 1;
    if(col==row) return 1;
    
    long long a[1024];
    a[0]=1;
    a[1]=1;    
    int p = 2;
    int q;
    
    while(p<=row){
        a[p] = 1;
        for(q=p-1;q>=1;q—) a[q] = a[q] + a[q-1]; //填空
        p++;
    }
    
    return a[col];
}

int main()
{
    printf("%d\n", f(6,2));
    printf("%d\n", f(6,3));
    printf("%lld\n", f(40,20));    
    return 0;
}

请仔细分析源码,并完成划线部分缺少的代码。
注意:只提交缺少的代码,不要提交已有的代码和符号。也不要提交说明性文字。

6.标题:字母组串(递归)

由 A,B,C 这3个字母就可以组成许多串。
比如:"A","AB","ABC","ABA","AACBB" ....

现在,小明正在思考一个问题:
如果每个字母的个数有限定,能组成多少个已知长度的串呢?

他请好朋友来帮忙,很快得到了代码,
解决方案超级简单,然而最重要的部分却语焉不详。

请仔细分析源码,填写划线部分缺少的内容。

#include <stdio.h>

// a个A,b个B,c个C 字母,能组成多少个不同的长度为n的串。
int f(int a, int b, int c, int n)
{
    if(a<0 || b<0 || c<0) return 0;
    if(n==0) return 1; 
    
    return f(a-1,b,c,n-1)+f(a,b-1,c,n-1)+f(a,b,c-1,n-1) ;  // 填空
}

int main()
{
    printf("%d\n", f(1,1,1,2));
    printf("%d\n", f(1,2,3,3));
    return 0;
}

对于上面的测试数据,小明口算的结果应该是:
6
19

注意:只填写划线部分缺少的代码,不要提交任何多余内容或说明性文字。

7.标题: Excel地址  (注意特判)

Excel单元格的地址表示很有趣,它使用字母来表示列号。
比如,
A表示第1列,
B表示第2列,
Z表示第26列,
AA表示第27列,
AB表示第28列,
BA表示第53列,
....

当然Excel的最大列号是有限度的,所以转换起来不难。
如果我们想把这种表示法一般化,可以把很大的数字转换为很长的字母序列呢?

本题目既是要求对输入的数字, 输出其对应的Excel地址表示方式。

例如,
输入:
26
则程序应该输出:
Z

再例如,
输入:
2054
则程序应该输出:
BZZ

我们约定,输入的整数范围[1,2147483647]

资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗  < 1000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。

注意:
main函数需要返回0;
只使用ANSI C/ANSI C++ 标准;
不要调用依赖于编译环境或操作系统的特殊函数。
所有依赖的函数必须明确地在源文件中 #include <xxx>
不能通过工程设置而省略常用头文件。

提交程序时,注意选择所期望的语言类型和编译器类型。

------------------------------

笨笨有话说:
    这有点像进制关系,又不完全是。好像末2位是以1当26,末3位是以1当26*26

歪歪有话说:
    要是从字母序列转数字还好点,倒过来有点麻烦,不过计算机跑得快啊。

#include <stdio.h>
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main() {int n,nn,tmp;string s;cin>>n;nn=n;while(n!=0) {tmp=n%26;if(tmp==0) {s+='Z';n=n/26-1;} else {s+='A'+tmp-1;n/=26;}}reverse(s.begin(),s.end());cout<<s;return 0;
}

8.标题:九宫幻方(dfs)

小明最近在教邻居家的小朋友小学奥数,而最近正好讲述到了三阶幻方这个部分,三阶幻方指的是将1~9不重复的填入一个3*3的矩阵当中,使得每一行、每一列和每一条对角线的和都是相同的。
    
    三阶幻方又被称作九宫格,在小学奥数里有一句非常有名的口诀:“二四为肩,六八为足,左三右七,戴九履一,五居其中”,通过这样的一句口诀就能够非常完美的构造出一个九宫格来。
    
4 9 2
3 5 7
8 1 6

有意思的是,所有的三阶幻方,都可以通过这样一个九宫格进行若干镜像和旋转操作之后得到。现在小明准备将一个三阶幻方(不一定是上图中的那个)中的一些数抹掉,交给邻居家的小朋友来进行还原,并且希望她能够判断出究竟是不是只有一个解。
    
    而你呢,也被小明交付了同样的任务,但是不同的是,你需要写一个程序~

输入格式:
输入仅包含单组测试数据。
每组测试数据为一个3*3的矩阵,其中为0的部分表示被小明抹去的部分。
对于100%的数据,满足给出的矩阵至少能还原出一组可行的三阶幻方。

输出格式:
如果仅能还原出一组可行的三阶幻方,则将其输出,否则输出“Too Many”(不包含引号)。

样例输入
0 7 2
0 5 0
0 3 0

样例输出
6 7 2
1 5 9
8 3 4

资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗  < 1000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。

注意:
main函数需要返回0;
只使用ANSI C/ANSI C++ 标准;
不要调用依赖于编译环境或操作系统的特殊函数。
所有依赖的函数必须明确地在源文件中 #include <xxx>
不能通过工程设置而省略常用头文件。

提交程序时,注意选择所期望的语言类型和编译器类型。

--------------

笨笨有话说:
    我最喜欢这类题目了。既然九宫幻方一共也没有多少,我就不辞辛劳地一个一个写出来好了。
    也不能太过分,好歹用个数组。

#include<iostream>
#include<stdlib.h>
#include<cstring>
using namespace std;  //确定一维数组的基调
int ans[10],mp[10],vis[10];//成功一次即将数组整体赋值给ans以备输出,mp[][],vis[][]搜索总是要返回来它原本的样子的
int cnt;
bool judge(){if(mp[1]+mp[2]+mp[3]!=15||mp[4]+mp[5]+mp[6]!=15||mp[7]+mp[8]+mp[9]!=15) return false;if(mp[1]+mp[4]+mp[7]!=15||mp[2]+mp[5]+mp[8]!=15||mp[3]+mp[6]+mp[9]!=15) return false;if(mp[1]+mp[5]+mp[9]!=15||mp[3]+mp[5]+mp[7]!=15) return false;return true;
}
void dfs(int pos){if(cnt>1) return; //剪枝 if(pos==10){ //深搜出口 if(judge()){ cnt++;//如果成功cnt++并将成功的尝试赋值给按时以备不时之需 memcpy(ans,mp,sizeof mp);}return;}if(mp[pos]) dfs(pos+1);//若该位置的数已填好(不为0)搜索下一位 else{ //否则逐个标记、搜索、还原标记 for(int i=1;i<=9;i++){if(vis[i]) continue;mp[pos]=i,vis[i]=1;dfs(pos+1);mp[pos]=0,vis[i]=0;}}
}
int main(){for(int i=1;i<=9;i++){ scanf("%d",&mp[i]);vis[mp[i]]=1; //将已经填好的数字标记,不可被重复使用 } dfs(1); //从第一个位置开始搜索 if(cnt==1){ //如果符合条件的结果为1则输出,否则输出Too Manyfor(int i=1;i<=9;i++)cout<<ans[i]<<(i%3==0?'\n':' ');//当第一次成功时已把答案整体赋值给ans了 }elsecout<<"Too Many\n";return 0;
} 

9.标题:拉马车

小的时候,你玩过纸牌游戏吗?
有一种叫做“拉马车”的游戏,规则很简单,却很吸引小朋友。

其规则简述如下:
假设参加游戏的小朋友是A和B,游戏开始的时候,他们得到的随机的纸牌序列如下:
A方:[K, 8, X, K, A, 2, A, 9, 5, A]
B方:[2, 7, K, 5, J, 5, Q, 6, K, 4]

其中的X表示“10”,我们忽略了纸牌的花色。

从A方开始,A、B双方轮流出牌。

当轮到某一方出牌时,他从自己的纸牌队列的头部拿走一张,放到桌上,并且压在最上面一张纸牌上(如果有的话)。

此例中,游戏过程:
A出K,B出2,A出8,B出7,A出X,此时桌上的序列为:

K,2,8,7,X

当轮到B出牌时,他的牌K与桌上的纸牌序列中的K相同,则把包括K在内的以及两个K之间的纸牌都赢回来,放入自己牌的队尾。注意:为了操作方便,放入牌的顺序是与桌上的顺序相反的。
此时,A、B双方的手里牌为:
A方:[K, A, 2, A, 9, 5, A]
B方:[5, J, 5, Q, 6, K, 4, K, X, 7, 8, 2, K]

赢牌的一方继续出牌。也就是B接着出5,A出K,B出J,A出A,B出5,又赢牌了。
5,K,J,A,5
此时双方手里牌:
A方:[2, A, 9, 5, A]
B方:[Q, 6, K, 4, K, X, 7, 8, 2, K, 5, A, J, K, 5]

注意:更多的时候赢牌的一方并不能把桌上的牌都赢走,而是拿走相同牌点及其中间的部分。但无论如何,都是赢牌的一方继续出牌,有的时候刚一出牌又赢了,也是允许的。

当某一方出掉手里最后一张牌,但无法从桌面上赢取牌时,游戏立即结束。

对于本例的初始手牌情况下,最后A会输掉,而B最后的手里牌为:

9K2A62KAX58K57KJ5

本题的任务就是已知双方初始牌序,计算游戏结束时,赢的一方手里的牌序。当游戏无法结束时,输出-1。

输入为2行,2个串,分别表示A、B双方初始手里的牌序列。
输出为1行,1个串,表示A先出牌,最后赢的一方手里的牌序。

例如,
输入:
96J5A898QA
6278A7Q973

则程序应该输出:
2J9A7QA6Q6889977

再比如,
输入:
25663K6X7448
J88A5KJXX45A

则程序应该输出:
6KAJ458KXAX885XJ645

我们约定,输入的串的长度不超过30

资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗  < 1000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。

注意:
main函数需要返回0;
只使用ANSI C/ANSI C++ 标准;
不要调用依赖于编译环境或操作系统的特殊函数。
所有依赖的函数必须明确地在源文件中 #include <xxx>
不能通过工程设置而省略常用头文件。

提交程序时,注意选择所期望的语言类型和编译器类型。

----------------------------
    
笨笨有话说:
    不断删除前边的,又要后边添加.... 如果用数组,需要开一个大点的,请佛祖保佑在游戏结束前,不会用到数组的边缘。

歪歪有话说:
    反正串也不长,不如每次操作都返回一个新的串。

默默有话说:
    我一般都不吱声,这是典型的队列结构,动态数组最好,没有?自己造一个呗!

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
string s1,s2,cur;
int cnt;
int Out(string &s) { //&s出牌 int find,len;char now=s[0];string tmp;s.replace(0,1,"");find=cur.find(now);if(find!=-1) {len=cur.size();tmp=cur.substr(find,len-find+1);cur.replace(find,len-find+1,"");reverse(tmp.begin(),tmp.end());s+=now+tmp;return 1;}else cur+=now;return 0;
}
void deal() { //游戏过程 string tmp;while(s1.size()&&s2.size()) {if(cnt>1000000) break;cnt++;if(Out(s1)) continue;  //若s1成功收牌,则继续由s1出牌 if(Out(s2)){ //否则交换出牌顺序 tmp=s1;s1=s2;s2=tmp;}}
}
int main() {cin>>s1>>s2;deal();if(cnt>1000000) cout<<"-1\n";else if(s1.size()) cout<<s1;else if(s2.size()) cout<<s2;return 0;
}

string ss=s.substr(start,len);

s.replace(start,len,"要替换的字符") ;

s.find(ss[i])!=-1 找到则返回所在下标

10.标题:图形排版(不会做哎,留个纪念吧……)

小明需要在一篇文档中加入 N 张图片,其中第 i 张图片的宽度是 Wi,高度是 Hi。  
假设纸张的宽度是 M,小明使用的文档编辑工具会用以下方式对图片进行自动排版:

1. 该工具会按照图片顺序,在宽度 M 以内,将尽可能多的图片排在一行。该行的高度是行内最高的图片的高度。例如在 M=10 的纸张上依次打印 3x4, 2x2, 3x3 三张图片,则效果如下图所示,这一行高度为4。(分割线以上为列标尺,分割线以下为排版区域;数字组成的矩形为第x张图片占用的版面)

0123456789
----------
111
111  333
11122333
11122333

2. 如果当前行剩余宽度大于0,并且小于下一张图片,则下一张图片会按比例缩放到宽度为当前行剩余宽度(高度向上取整),然后放入当前行。例如再放入一张4x9的图片,由于剩余宽度是2,这张图片会被压缩到2x5,再被放入第一行的末尾。此时该行高度为5:

0123456789
----------
        44
111     44
111  33344
1112233344
1112233344

3. 如果当前行剩余宽度为0,该工具会从下一行开始继续对剩余的图片进行排版,直到所有图片都处理完毕。此时所有行的总高度和就是这 N 张图片的排版高度。例如再放入11x1, 5x5, 3x4 的图片后,效果如下图所示,总高度为11:

0123456789
----------
        44
111     44
111  33344
1112233344
1112233344
5555555555
66666
66666777
66666777
66666777
66666777

现在由于排版高度过高,图片的先后顺序也不能改变,小明只好从 N 张图片中选择一张删除掉以降低总高度。他希望剩余N-1张图片按原顺序的排版高度最低,你能求出最低高度是多少么?

输入:
第一行包含两个整数 M 和 N,分别表示纸张宽度和图片的数量。
接下来 N 行,每行2个整数Wi, Hi,表示第 i 个图大小为 Wi*Hi。

对于30%的数据,满足1<=N<=1000
对于100%的数据,满足1<=N<=100000,1<=M, Wi, Hi<=100

输出:
一个整数,表示在删除掉某一张图片之后,排版高度最少能是多少。

样例输入:
4 3
2 2
2 3
2 2

样例输出:
2

另一个示例,
样例输入:
2 10
4 4
4 3
1 3
4 5
2 1
2 3
5 4
5 3
1 5
2 4

样例输出:
17

资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗  < 2000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。

注意:
main函数需要返回0;
只使用ANSI C/ANSI C++ 标准;
不要调用依赖于编译环境或操作系统的特殊函数。
所有依赖的函数必须明确地在源文件中 #include <xxx>
不能通过工程设置而省略常用头文件。

提交程序时,注意选择所期望的语言类型和编译器类型。

2017年蓝桥杯C语言混搭题解相关推荐

  1. 2017年蓝桥杯C语言组大学B组 C/C++题解

    1.标题: 购物单(还是程序的力量比较伟大--) 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推辞. 这不,XX大促销又来了!老板 ...

  2. 递增三元组蓝桥杯c语言,蓝桥-递增三元组-蓝桥

    蓝桥-递增三元组-蓝桥 蓝桥-递增三元组-蓝桥 手动求解一下会发现,B数组是关键 若固定b = B[i] a中的可能的取值是:a0 ----- at小于等于b的元素下标(小于b的个数) c中的可能取值 ...

  3. # 2017年蓝桥杯省赛cc++本科B组试题

    2017年蓝桥杯省赛c/c++本科B组试题 第一题:购物单 问题 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推辞. 这不,XX大 ...

  4. 蓝桥杯7届c语言 c组答案,第七届蓝桥杯C语言C组-(自己懂的题目)

    第七届蓝桥杯C语言C组-(自己懂的题目) 表示刚刚查了成绩,省赛一等奖,有资格去北京了,然后写一下总结, 先来写一下我懂的题目,毕竟我也是菜鸟,听说国赛比预赛难几个等级... 第一题 报纸页数 X星球 ...

  5. 记2017第八届蓝桥杯决赛(国赛)—北京三日游

    离蓝桥杯国赛结束也已经有很多天了,这段时间也一直没怎么做题,也好久没打开csdn了,今天又重新捡起来,所以来随意扯一下这次的北京三日游.......啊不,2017第八届蓝桥杯. 这已经是我第二次打蓝桥 ...

  6. 数组三元数c语言程序,递增三元数组——第九届蓝桥杯C语言B组(省赛)第六题...

    原创 标题:递增三元组 给定三个整数数组 A = [A1, A2, ... AN], B = [B1, B2, ... BN], C = [C1, C2, ... CN], 请你统计有多少个三元组(i ...

  7. 换个格式输出整数 蓝桥杯 C语言

    换个格式输出整数 蓝桥杯 C语言 描述: 让我们用字母B来表示"百".字母S表示"十",用12-n来表示不为零的个位数字n(<10),换个格式来输出任一个 ...

  8. 标题 错误票据c语言,内含答案的 -- 2013蓝桥杯C语言本科组B.doc

    内含答案的 -- 2013蓝桥杯C语言本科组B.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们 ...

  9. 蓝桥杯 C语言训练【1952】——求长方形面积

    蓝桥杯 C语言训练[1952]--求长方形面积 1.题目要求: 输入一个长方形的长和宽(整数),输出该长方形的周长C和面积S,要求格式如例(请注意打印"C:"."S:&q ...

最新文章

  1. rhel-server-7.5-x86_64-dvd.iso镜像下载及rar压缩包的解压
  2. “搞垮” 微博服务器?每天上亿条用户推送是如何做到的
  3. TensorFlow、Numpy中的axis的理解
  4. Singleton + Proxy 模式+AOP
  5. DOM中的onbeforeunload函数
  6. 机器人庄园作文_小学生的科幻作文
  7. js 操作select和option
  8. lucene全文搜索之三:生成索引字段,创建索引文档(给索引字段加权)基于lucene5.5.3...
  9. dnf用虚拟机会被制裁吗_DNF: 神豪奶妈扬言, 战斗力没有超过他的, 都不配被加buff!...
  10. maven集成tomcat插件启动报错
  11. nginx RTMP FFmpeg 视频直播
  12. Hadoop集群部署模型纵览3
  13. 近12年的计算机考研408真题及答案解析分享
  14. 如何修改PDF,PDF怎么旋转页面方向
  15. html中font-family样式,详解中文字体在CSS样式中font-family对应的英文名称
  16. Openwrt 18.06 iPhone XR usb tethering导致内核崩溃问题解决方案
  17. ANSI E1.11-2008(R2018) DMX512-A 部分翻译
  18. scrapy 远程登录控制台
  19. 使用wordpress建立企业或博客网站新手教程
  20. 发送邮件+抄送+附件

热门文章

  1. MAC 安装OpenJDK
  2. wlan没有有效的ip配置 win10
  3. Pytorch的RELU函数
  4. 百度之星-逃离这棵树-(期望dp)
  5. 世界上第一个计算机有鼠标,40年的经典,世界上第一个鼠标
  6. PTA - 二叉搜索树的结构 (30 分)——建树,输入处理
  7. Linux如何查看系统路径适合初学者
  8. IntelliJ Idea 常用10款插件(提高开发效率)
  9. 使用QT实现倒计时——20191103
  10. 10. POP3收取邮件