问题描述:
小朋友玩跳绳比赛,要计算在一分钟内跳了多少下.假设每秒钟跳一下,如果中途失败了,则要花三秒钟后才能开始重跳.一般小朋友跳绳一分钟要跳坏好几次.现在给出小朋友每次跳坏时已经跳的总数,求小朋友在一分钟内跳了多少下.
关于输入:
第一行为n个小朋友
其余各行,每行第一个数是跳坏的次数m,其余m个整数是跳坏时累计跳得个数;
关于输出:
输出相应小朋友头一分钟内跳得个数
输入:
6
0
3 12 23 45
1 17
4 10 20 30 40
5 10 20 30 40 58
6 10 20 30 40 47 60
输出:
60
51
57
48
48
47
代码:
#include <iostream>
using namespace std;
int main()
{
int i, j, n, m, c, t;
cin >> n;
for(i = 1; i <= n; i++)
{
c = 60;
cin >> m;
for(j = 1; j <= m; j++)
{
cin >> t;
if(t < c)
c = (t + 3 > c) ? t : (c - 3);
}
cout << c << endl;
}
return 0;
}
利用动态数组求解:
代码:
#include<stdio.h>
#include<malloc.h>
int main()
{
int n,m,i,j,c,t;
scanf("%d",&n);
int *a=(int *)malloc(sizeof(int)*n);
while(n--)
{
scanf("%d",&m);
c=60;
for(i=1;i<=m;i++)
{ scanf("%d",&a[i]);
if(a[i]<c)
c=(a[i]+3>c)?a[i]:(c-3);
}
printf("%d\n",c);
}
free(a);
return 0;
}