CodeFoeces-476B

題目

原題鏈接:B. Dreamoon and WiFi

題意

有兩個字符串,其中“+”代表+1,“-”代表-1,“?”代表不確定。問第二個字符串有多少概率和第一個字符串值相等。bfs搜索,因為字符串長度最多10,所以最多10層。

代碼

#include<bits/stdc++.h>
using namespace std;
int sum1=0,sum2=0,t,ans=0,tmp=0;
void dfs(int sum,int flag) {
//  printf("sum=%d flag=%d\n",sum,flag);
    if(flag==t) {
        if(sum==sum1) {
            tmp++;
            ans++;
//          printf("ans_%d = %d\n",ans,sum);
            return ;
        } else {
            tmp++;
            return ;
        }
    }
    dfs(sum+1,flag+1);
    dfs(sum-1,flag+1);

}
int main() {
    char s1[100],s2[100];
    scanf("%s\n%s",s1,s2);
    for(int i=0; i<strlen(s1); i++) {
        if(s1[i]=='+') sum1++;
        else sum1--;
    }
    for(int i=0; i<strlen(s2); i++) {
        if(s2[i]=='+') sum2++;
        else if(s2[i]=='-') sum2--;
        else t++;
    }
    dfs(sum2,0);
//  printf("%d %d\n",ans,tmp);
    printf("%.12lf\n",ans*1.0/tmp);
    return 0;
}
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容