实例1:统计天数
题目描述
炎热的夏日,KC 非常的不爽。他宁可忍受北极的寒冷,也不愿忍受厦门的夏天。最近,他开始研究天气的变化。他希望用研究的结果预测未来的天气。
经历千辛万苦,他收集了连续 N(1≤N≤106) 的最高气温数据。
现在,他想知道最高气温一直上升的最长连续天数。
输入
第 1 行:一个整数 N 。1≤N≤106
第 2 行:N个空格隔开的整数,表示连续 N 天的最高气温。0≤ 最高气温 ≤109 。
输出
1 行:一个整数,表示最高气温一直上升的最长连续天数。
样例输入
10
1 2 3 2 4 5 6 8 5 9
样例输出
5
实例2: 洗牌
题目描述
魔术师刘谦要洗牌了,请你写个程序来模拟洗牌的过程。
洗牌分弹牌和切牌两个操作:
弹牌——将牌组等分成两份,然后交错相插,如当前牌为1 2 3 4 5 6,现在开始弹牌,先将牌分成1 2 3和4 5 6,然后交错相插,变成1 4 2 5 3 6
切牌——从牌堆里面拿出连续的一段,然后放到顶端。如当前牌为1 2 3 4 5 6,切完2~5之间的4张牌后变成2 3 4 5 1 6。
输入
第一行为两个正整数N和M,N表示牌堆里面有N张牌,M表示共进行M次洗牌的操作。
第二行有N个正整数,代表N张牌上的数字,刘谦用的牌其实就是标有数字的卡片。
接下来M行,每行一个整数或者三个整数。
如果第一个数为0,那么这一行就这只有一个数,表示弹牌。
如果第一个数为1,那么后面跟着两个正整数b 和e,表示把b~e这段牌切到顶端。
输出
输出M次操作后从第一张开始的每张牌上的数字。相邻两数严格用一个空格隔开
样例输入
10 5
46 21 22 1 20 46 50 7 42 19
1 4 8
1 4 4
1 4 7
0
0
样例输出
46 22 1 21 7 42 20 50 46 19
样例程序:
#include
using namespace std;
int main()
{
int n,m,a,b,e;
cin>>n>>m;
int card[60],card2[60];
for(int i=1;i<=n;i++)
cin>>card[i];
for(int i=1;i<=m;i++)
{
cin>>a;
if(a==1)
{
cin>>b>>e;
for(int j=b;j<=e;j++)
card2[j-b+1]=card[j];
for(int j=1;j
card2[e-b+j+1]=card[j];
for(int j=e+1;j<=n;j++)
card2[j]=card[j];
}
else
{
for(int j=1;j<=n/2;j++)
{
card2[2*j-1]=card[j];
card2[2*j]=card[j+n/2];
}
}
for(int i=1;i<=n;i++)
card[i]=card2[i];
}
for(int i=1;i
cout<<card2[i]<<" ";
cout<<card2[n]<
return 0;
}
运行结果如下:
中国电子学会青少年软件编程等级考试2级(C/C++)专题二:一维数组
中国电子学会青少年软件编程等级考试2级(C/C++)专题一:数制和进制转换
C+ +编程题解:选班委(一维数组)
相关编程技术和学习等方面的问题请联系下方老师咨询