CUST OJ -76- 爐石傳說真尼瑪好玩
阿新 • • 發佈:2018-12-14
1.題目
- 描述 “爐石傳說”是一款快樂的卡牌類遊戲,其中有一張牌為“褻瀆”,其效果 如下: 對敵方隨從全部造成1點傷害,如果有隨從死亡,則重複此效果–即再次對敵方所有隨從造成1點傷害, 直到重複某次效果後敵方沒有隨從死亡/敵方全部隨從死亡為止. 例:敵方有三個隨從,生命值分別為1,2,3。則使用“褻瀆”牌後敵方隨從會全部死亡。 如果敵方隨從在使用“褻瀆”牌後全部死亡,lzp會非常的快樂。 現給出敵方隨從的數量,以及他們的生命值,問lzp打完“褻瀆”牌後是否會快樂。 如果lzp快樂,則輸出“YES”,否則則輸出“NO”
- 輸入 多組輸入,每組第一行輸入一個數n(1<=n<=10),代表敵方隨從的數量, 第二行輸入n個數,a1,a2…an,(1<=ai<=10)代表n個隨從的生命值。
- 輸出 每組輸出一行,每行輸入一個單詞“YES”或“NO”(輸出不包含引號), YES表示lzp會感到快樂,NO表示lzp不會快樂。
- 輸入樣例 5 1 2 3 4 5 5 1 2 3 3 2 5 1 1 3 4 5
- 輸出樣例 YES YES NO
2. 理解
- 用了函式遞迴來解決
3.code
#include<iostream>
using namespace std;
int main(){
int n;
while(cin >> n){
int a[n];
bool ifis = true ;
for(int i = 0; i < n; i++){
cin >> a[i];
a[i]--;
}
int *f(int x[], int y, int z);
int *b;
b = f(a, n, n);
for(int i = 0; i < n; i++){
if(b[i] > 0){
ifis = false;
break ;
}
}
if(ifis) cout << "YES" << endl;
else cout << "NO" << endl;
}
}
int *f(int x[], int y, int z){
y--;
if(y == 0){
return x;
}
bool ifis2 = false;
for(int i = 0; i < z; i++){
if(x[i] == 0){
ifis2 = true;
break;
}
}
if(ifis2 == true){
for(int i = 0; i < z; i++){
x[i]--;
}
f(x, y, z);
}else{
return x;
}
}