Codeforces - 476B - Dreamoon and WiFi

发布于 2024-09-07 06:51:01 字数 2509 浏览 8 评论 0

题目大意

给你两个字符串 aba 是发送方的字符串, b 是接收方的字符串, a 发送的字符串是确定的,但是 b 接收到的字符串有可能不确定,如果确定是 + ,则距离 +1 ,如果确定是 - ,则距离 -1 ,否则如果是 ? ,就不确定, +1-1 的概率各为 0.5 ,要你判断在 a 确定的情况下, b 最终的距离和 a 相等的概率。

解析

枚举 b 出现的所有情况,看有多少种情况会和 a 的最终结果相同,因为数据范围小,所以可以枚举(暴搜即可)。

import java.io.*;
import java.util.*;

public class Main {

    static class Clazz{
        ArrayList<Double>res;
        double sum;
        double goal;
        String b;

        Clazz(String b){
            this.b = b;
            sum = 0;
            res = new ArrayList<>();
            goal = 0;
        }

        double computer(){
            dfs(0);
            double numerator = 0;         //分子
            int denominator = res.size(); //分母
            for(int i = 0; i < res.size(); i++){
                if(res.get(i) == goal)
                    numerator += 1;
            }
            return numerator/denominator;
        }

        void dfs(int index) {
            if(index == b.length()){
                res.add(sum);
                return;
            }
            char cur = b.charAt(index);
            if(cur == '+'){
                sum += 1;
                dfs(index+1);
                sum -= 1;
            }else if(cur == '-'){
                sum -= 1;
                dfs(index+1);
                sum += 1;
            }else {
                // 枚举两种情况
                sum += 1;
                dfs(index+1);
                sum -= 1;

                sum -= 1;
                dfs(index+1);
                sum += 1;
            }
        }
    }

    public static void main(String[] args){
        Scanner cin = new Scanner(new BufferedInputStream(System.in));
        PrintStream out = System.out;
        String a = cin.next();
        String b = cin.next();

        Clazz clazz = new Clazz(b);
        for(int i = 0; i < a.length(); i++)
            clazz.goal += a.charAt(i) == '+' ? 1 : (-1);

        out.println(clazz.computer());
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

南汐寒笙箫

暂无简介

0 文章
0 评论
601 人气
更多

推荐作者

qq_E2Iff7

文章 0 评论 0

Archangel

文章 0 评论 0

freedog

文章 0 评论 0

Hunk

文章 0 评论 0

18819270189

文章 0 评论 0

wenkai

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文