站外题求调
  • 板块灌水区
  • 楼主Nake_fu
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/26 09:01
  • 上次更新2024/8/26 11:31:59
查看原帖
站外题求调
727172
Nake_fu楼主2024/8/26 09:01

一个合法的号码是由 0−9 组成的四位数字字符串,可以是 0 开头。

粗心的火焰车忘掉了他的号码,只记得有这样一个字符串,是用来描述他的号码的:

字符串长度为 10, 10 10 个字符分别为 S 0 , S 1 , ​ ,S 2 ​ ,…,S 9 ​ 表示:

如果 S i ​ 是 o,则号码中一定包括数字 i 如果 S i ​ 是 x,则号码中一定不包含数字 i 如果 S i ​ 是 ?,则不确定号码中是否包含数字 i 输出符合条件的号码数量。

输入:ooo???xxxx

输出:108

输入:o?xxxxxxxx

输出:15 代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=15;
int ans,cnt;
string s;
bool f1[N],f2[N];
signed main()
{
    cin>>s;
    for(int i=0;i<s.size();i++)
    {
        if(s[i]=='o')
        {
            cnt++;
            f1[i]=1;
            f2[i]=1;
        } 
        else if(s[i]=='?')
        {
            f2[i]=1;
        }
    }
    for(int i=0;i<=9;i++)
    {
        for(int j=0;j<=9;j++)
        {
            for(int k=0;k<=9;k++)
            {
                for(int z=0;z<=9;z++)
                {
                    if(cnt==3)
                    {
                        if(f2[i])
                        {
                            if(f1[j] && f1[k] && f1[z] && j!=k && k!=z && z!=j) 
                            {
                                ans++;
                               // cout<<i<<j<<k<<z<<endl;
                            }
                        }
                        else if(f2[j])
                        {
                            if(f1[i] && f1[k] && f1[z] && i!=k && k!=z && z!=i) 
                            {
                                ans++;
                                 //cout<<i<<j<<k<<z<<endl;
                            }
                        }
                        else if(f2[k])
                        {
                            if(f1[i] && f1[j] && f1[z] && i!=j && j!=z && z!=i){
                                ans++;
                                 //cout<<i<<j<<k<<z<<endl;
                            } 
                        }
                        else if(f2[z])
                        {
                            if(f1[i] && f1[j] && f1[k] && i!=j && j!=k && k!=i)
                            {
                                ans++;
                                // cout<<i<<j<<k<<z<<endl;
                            } 
                        }
                        
                    }else if(cnt==2){
                         if(f2[i] && f2[j])
                        {
                            if(f1[k] && f1[z] && k!=z ) ans++;
                        }
                        else if(f2[i] && f2[k])
                        {
                            if(f1[j] && f1[z] && z!=j) ans++;
                        }
                        else if(f2[i] && f2[z])
                        {
                            if(f1[j] && f1[k] && k!=j) ans++;
                        }
                        else if(f2[j] && f2[k])
                        {
                            if(f1[i] && f1[z] && i!=z) ans++;
                        }
                        else if(f2[j] && f2[z])
                        {
                            if(f1[i] && f1[k] && i!=k) ans++;
                        }
                        else if(f2[k] && f2[z])
                        {
                            if(f1[i] && f1[j] && i!=j) ans++;
                        }
                    }
                    else if(cnt==1)
                    {
                        if(f1[i] && f2[j] && f2[k] && f2[z]) ans++;
                        else if(f2[i] && f1[j] && f2[k] && f2[z]) ans++;
                        else if(f1[k] && f2[i] && f2[j] && f2[z]) ans++;
                        else if(f1[z] && f2[i] && f2[j] && f2[k]) ans++;
                    }else if(cnt==4) ans=24;
                }
            }
        }
    }
    cout<<ans;
    return 0;
}
2024/8/26 09:01
加载中...