zoukankan      html  css  js  c++  java
  • Codeforces_490_E

    http://codeforces.com/problemset/problem/490/E

    dfs,过程要注意细节,特别是当前位置取了与上个数当前位置相同是,若后面不符合条件,则当前位置要重置'?'。

    #include<cstdio>
    #include<string>
    #include<iostream>
    using namespace std;
    string a[100005];
    
    bool dfs(int i,int j, bool flag)
    {
        
        if(j == a[i].size())    return flag;
        if(flag)
        {
            if(a[i][j] == '?')  a[i][j] = '0';
            return dfs(i,j+1,flag);
        }
        if(a[i][j] == '?')
        {
            a[i][j] = a[i-1][j];
            if(dfs(i,j+1,flag))    return 1;
            else if(a[i][j] == '9')
            {
                a[i][j] = '?';
                return 0;
            }
            else
            {
                a[i][j]++;
                return dfs(i,j+1,1);
            }
        }
        if(a[i][j] > a[i-1][j])    return dfs(i,j+1,1);
        if(a[i][j] == a[i-1][j])    return dfs(i,j+1,flag);
        else return 0;
    }
    int main()
    {
        a[0] = "0";
        int n;
        cin >> n;
        for(int i = 1;i <= n;i++)    cin >> a[i];
        for(int i = 1;i <= n;i++)
        {
            if(a[i].size() > a[i-1].size())
            {
                for(int k = 0;k < a[i].size();k++)
                {
                    if(a[i][k] == '?')
                    {
                        if(k == 0)    a[i][k] = '1';
                        else         a[i][k] = '0'; 
                    }
                }
            }
            else if(a[i].size() < a[i-1].size())
            {
                cout << "NO" << endl; 
                return 0;
            }
            else if(!dfs(i,0,0))
            {
                cout << "NO" <<endl;
                return 0;
            }
        }
        cout << "YES" << endl;
        for(int i = 1;i <= n;i++)    cout << a[i] << endl;
        return 0; 
    }
  • 相关阅读:
    自动化系列-pyppeteer安装
    用python做一个可视化生成二维码的工具
    Python第三方包之DingDingBot
    封装属于自己的Python包
    sqlldr使用
    MS MQ 消息队列
    PDF打印
    oracle 存储过程编辑 卡死
    winrar 压缩文件方法
    数值 转换 成 带千位符的数值,且转成大写
  • 原文地址:https://www.cnblogs.com/zhurb/p/5872400.html
Copyright © 2011-2022 走看看