JZOJ.1727. Wild Number
来源:互联网 发布:苏州房产成交数据 编辑:程序博客网 时间:2024/05/28 18:44
Problem
Description
Wild Number是一个有数字和问号组成的字符串(例如36?1?8)。一个数字与一个Wild Number匹配,当且仅当它们长度相等且不是问号的位置上对应相等。例如365198匹配36?1?8,但360199,361028,36128都不匹配。
Input
输入有相同长度的两行,第一行表示Wild Number,第二行一个整数X,X无前导零。数字长度在1-10之间。
Output
输出大于X且匹配Wild Number的n位数有多少个。(n是Wild Number的长度。)
Sample Input
?
5
Sample Output
4
Data Constraint
N<=10
?的个数小于等于7
Solution
我一开始发现这道题可以用暴力过,于是就用了暴力AC。
如果N变大,或?的个数>=8我就惨了。
后来我想到用数位DP。设
分两种情况:①s[i]=’?’②s[i]!=’?’
①
②再分3种小情况:
s[i]>=
Code
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>using namespace std;int f[15][2],i,l;char s[15],t[15];int main(){ scanf("%s",s+1); scanf("%s",t+1); l=strlen(s+1); f[0][0]=1; for(i=1;i<=l;i++) if (s[i]=='?') { f[i][0]=f[i-1][0]; f[i][1]=f[i-1][1]*10+(57-t[i])*f[i-1][0]; } else { if (s[i]>t[i]) { f[i][0]=0; f[i][1]=f[i-1][1]+f[i-1][0]; } else if (s[i]==t[i]) { f[i][0]=f[i-1][0]; f[i][1]=f[i-1][1]; } else if (s[i]<t[i]) { f[i][0]=0; f[i][1]=f[i-1][1]; } } printf("%d",f[l][1]);}
——2016.7.14
4 0
- JZOJ.1727. Wild Number
- Wild Number
- Wild Number (Standard IO)
- Wild Number (Standard IO)
- JZOJ.1241. Number
- JZOJ 5266. number
- JZOJ 3363 【NOI2013模拟】Number
- [jzoj]4086. 选数(number)(容斥+DP优化)
- wild cat
- wild china04
- jzoj 5026. 【NOI2017模拟3.19】Number 状压dp+大整数分解
- wild card 百搭牌;外卡
- POJ 1816 Wild Words
- pku1816 Wild Words (trie)
- pku 1816Wild Words
- Wild Pointer 野指针
- 关于Wild H 的
- Into the Wild决策
- AT命令上网
- 根据表结构自动生成JavaBean,史上最强最专业的表结构转JavaBean的工具(第3版)
- Zabbix 报错 [113] No route to host
- C++定义数组中的代码
- hdu 2046
- JZOJ.1727. Wild Number
- poj 3250 Floyd求负圈
- Spring学习笔记三: 通过注解配置Bean
- WebRTC编译篇之Ninja 编译系统 二
- 线程间通信-多生产者多消费者
- Eclipse 中Java注释模板设置方法
- android measure
- Linux进程通信——信号量
- U-boot原厂版本移植流程