英雄打怪游戏。
題目:英雄和怪都有能力值,英雄只能打能力值小于自己能力值的怪, 每打完一只怪獲得一個金幣,任意時刻可以用一個金幣換取 1 點能力值,但金幣數不能為負(初始為0)。 問:英雄可以以隨意順序打怪,問擁有金幣數的最大值,怪物可以不用打完。
輸入
1 3
2 2 1
說明:第一行第一個數表示英雄的初始能力值,第二個數表示怪物總數;第二行表示每個怪物的能力值。
輸出
2
說明:英雄先打了能力值為 1 的怪物,把獲得的 1 金幣換成 1 點能力值,則現在有 2 點能力值,把剩下的怪物打完,總共獲得 2 金幣。
#include<stdio.h> int main() {int hero_v,monster_c,monster_v[1000];int i,j,temp;int cur_v=0,max_v=0; scanf("%d %d",&hero_v,&monster_c);for(i=0;i<monster_c;i++){scanf("%d",&monster_v[i]);}//對怪物的能力值從小到大進行排序 for(i=0;i<monster_c-1;i++){for(j=0;j<monster_c-1-i;j++){if(monster_v[j]>monster_v[j+1]){temp=monster_v[j];monster_v[j]=monster_v[j+1];monster_v[j+1]=temp;}}}for(i=0;i<monster_c;i++){if(hero_v>=monster_v[i])//如果英雄值比怪物能力值大 {cur_v++;//當前的金幣加1 if(max_v<cur_v){//更新最大金幣值 max_v=cur_v;}}else if(cur_v+hero_v<monster_v[i])//如果當前金幣值全部購買能力,還打不過怪獸,退出循環 {break;}else {cur_v-=(monster_v[i]-hero_v);//花費金幣值來購買英雄能力 hero_v=monster_v[i];//更新英雄能力值 cur_v++;//當前金幣值加1 if(max_v<cur_v)//更新最大金幣值 {max_v=cur_v;}}}printf("%d",max_v);//輸出最大金幣值 }總結
- 上一篇: Verilog中的有限状态机
- 下一篇: 烤仔TVのCCW | 交易费代付机制