问题标题: 酷町堂:救救我 2612 打牌

0
0
已解决
张皓然
张皓然
中级光能
中级光能

救救孩子吧,再做不出来就不行了

/*
题目描述 Description
牛们自创了一种纸牌游戏,它们使用的牌的牌面被分为了N阶,
分别被标记为整数1到N(我们玩的扑克牌的牌面通常从1阶到
13阶,也就是从A到K)。现在它们规定出牌方式只有一种,就
是打顺子,所谓顺子,就是从i到j(i≤j),每张牌各出一张
(比如2 3 4 5)。现在给出某头牛抓到的牌,请问最少出多
少次能够把牌出完。

输入描述 Input Description
第一行,一个整数N
接下来N行,第i行一个整数ai,表示牌面为i的牌,牛抓了ai张

输出描述 Output Description
牛最少要出多少次牌才能将牌出光

样例输入 Sample Input
5 
2 
4 
1 
2 
3
样例输出 Sample Output
6
数据范围及提示 Data Size & Hint
1 <= N <= 100,000
0 <= ai <= 100000
*/
#include<iostream>
using namespace std;
int n,a[100005],ans;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	while(1){
		int ed=0;
		for(int i=1;i<=n;i++){
			if(a[i]>=1){
				ed=i;
				break;
			}
		}
//		cout<<1<<" ";
		int k=ed;
		while(a[k]>0){
			k++;
		}
//		cout<<2<<" ";
		ans++;
		for(int i=ed;i<k;i++){
			a[i]--;
		}
//		cout<<3<<" ";
		bool l=true;
		for(int i=1;i<=n;i++){
			if(a[i]>0){
				l=false;
			}
		}
//		cout<<4<<" ";
		if(l){
			break;
		}
	}
//	cout<<5<<" "; 
	cout<<ans;
	return 0;
}

题目以注释

救救我吧

张皓然在2022-07-28 10:04:08追加了内容

救命啊,有人吗


0
已采纳
陈慕嘉
陈慕嘉
初级光能
初级光能

 

孩纸,你想的太复杂了,首先定义数组,数组长度n;输入n;循环输入数组;定义一个long long类型的变量ans,ans=a[1],

然后从2循环到n,如果a[i]>a[i-1],ans+=a[i]-a[i-1],最后输出ans;

 

求采纳

0
我要回答