标签:soj soj1080 soj1080生化危机三 map
背景:由于对map使用的不熟悉,先一直无法编译通过,当纠正了map的错误后,一次ac。
思路:先用map对每个怪物需要消耗的子弹和一个怪物会伤害人多少血进行映射,然后就是简单模拟了。
学习:map的简单使用。
#include <iostream> #include <map> using namespace std; map<char,int> xue,zidan; int l,a; void judge(char guaiwu,int g_number,int clip,int herbal) { xue['Z']=1;xue['C']=1;xue['S']=2; xue['L']=3;xue['T']=4;xue['N']=5; zidan['Z']=3;zidan['C']=4;zidan['S']=5; zidan['L']=6;zidan['T']=15;zidan['N']=20; if((l/zidan[guaiwu])<g_number) { a=a-(g_number-l/zidan[guaiwu])*xue[guaiwu]; l=l%zidan[guaiwu]; } else { l=l-zidan[guaiwu]*g_number; if(guaiwu!='N') { l=l+clip*9; a=a+herbal*4; } } } int main() { int n; while(cin>>n>>l>>a&&n&&l&&a) { bool ok=true; while(n--) { char guaiwu[10]; if(a<=0) continue; int g_number,clip,herbal; cin>>guaiwu>>g_number>>clip>>herbal; judge(guaiwu[0],g_number,clip,herbal); if(a<=0) ok=false; } if(ok) cout<<"You can survive in the last escape."<<endl; else cout<<"You are gonna die down here."<<endl; } return 0; }
标签:soj soj1080 soj1080生化危机三 map
原文地址:http://blog.csdn.net/qiweigo/article/details/43791773