UVa 1636 - Headshot(概率)

给出一个长度为n的01串表示子弹序列,打一枪空的,求下一枪的策略。

书上给出了思路,统计串中00和0的个数a和b,然后求概率a/b和b/n的大小。前者大是SHOOT,后者大是ROTATE。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<iostream>
#include<string>
using namespace std;
int main(){
ios::sync_with_stdio(false);
string s;
while(cin>>s){
int a=0,b=0;
for(int i=0;i<s.length();++i)
if(s[i]=='0'){
++a;
if(s[(i+1)%s.length()]=='0') ++b;
}
a*=a,b*=s.length();
if(a==b) cout<<"EQUAL"<<endl;
else cout<<(a>b?"ROTATE":"SHOOT")<<endl;
}
return 0;
}

本文迁移自我的 CSDN博客 ,格式可能有所偏差。