UVa1636 Headshot
数据结构学得心累,做点小题换心情
原题是PDF格式查看的,贴过来好麻烦,果断放弃
已知前一次尝试结果是0,则可以得知:
下一次若仍是0,则遇到了一个00串
下一次若是1,则遇到了一个01串
SHOOT被击中的概率是00串数/(00串数+01串数)
ROTATE被击中的概率是0数量/总字符数
模拟判断即可,注意len-1和0位置的字符是连着的
1 #include<bits/stdc++.h> 2 using namespace std; 3 char n[500]; 4 int len; 5 int a,b;//a记录01串数,b记录00串数 6 int main(){ 7 while(cin>>n){ 8 a=0;b=0;int s=0;//s记录0的数量 9 len=strlen(n); 10 int i; 11 for(i=0;i<len-1;i++){ 12 if(n[i]=='0'){ 13 if(n[i+1]=='1')a++; 14 else b++; 15 s++; 16 } 17 } 18 if(n[len-1]=='0'){ 19 if(n[0]=='1')a++; 20 else b++; 21 s++; 22 } 23 double x=b*1.0/(a+b); 24 double y=s*1.0/len; 25 if(x>y)printf("SHOOT\n"); 26 else if(x==y)printf("EQUAL\n"); 27 else printf("ROTATE\n"); 28 } 29 return 0; 30 }
本文为博主原创文章,转载请注明出处。