zoukankan      html  css  js  c++  java
  • 带通配符的数

    给定一个带通配符问号的数W,问号可以代表任意一个一位数字。再给定一个整数X,和W具有相同的长度。问有多少个整数符合W的形式并且比X大?
    输入格式:
    多组数据,每组数据两行,第一行是W,第二行是X,它们长度相同。在[1..10]之间。
    输出格式:
    每行一个整数表示结果。
    输入样例:
    36?1?8
    236428
    8?3
    910
    输出例样
    100
    参考代码:
     1 #include<iostream>
     2 #include<stdio.h>
     3 #include<stdlib.h>
     4 #include<exception>
     5 #include<cmath>
     6 using namespace std;
     7 
     8 long int getcount(char str1[],char str2[],int length)
     9 {
    10     if(str1==NULL||str2==NULL) return 0;
    11     int number=0,num1=0,num2=0;
    12     int sum=0;
    13     for(int i=0;str1[i]!='';++i)//统计'?'出现的次数
    14     {
    15         if(str1[i]=='?')
    16             number++;
    17     }
    18     if(*str1<*str2&&*str1!='?') return 0;
    19     if(number==0) return (atol(str1)>atol(str2) ? 1 : 0);//str1不含'?'
    20     if(*str1>*str2&&*str1!='?') return pow(10,number);
    21     int c=0;
    22     while(*(str1+c)>=*(str2+c)&&*(str1+c)!=''||(*(str1+c)=='?'&&(str1+c)!=''))
    23     {
    24         c++;
    25         if(*(str1+c)<*(str2+c)&&*(str1+c)!='?')
    26         {
    27           for(i=0;i<c;i++)
    28           {
    29               if(*(str1+i)=='?')
    30               {
    31               sum=sum+('9'-str2[i])*pow(10,number-1-num1);
    32               num1++;
    33               }
    34           }
    35               return sum;   
    36         }
    37     }
    38     for(i=0;i<length;i++)
    39     {
    40         if(str1[i]=='?')
    41         {sum=sum+('9'-str2[i])*pow(10,number-1-num2);num2++;}
    42     }
    43     return sum;
    44 
    45 }
    46 
    47 void main()
    48 {
    49  char str1[]="??234??";
    50  char str2[]="2323478";
    51  int length1=sizeof(str1)-1;
    52  int length2=sizeof(str2)-1;
    53  if(length1!=length2) throw exception("Invalid input.");//抛出异常输入错误
    54  cout<<length1<<length2<<endl;
    55  cout<<getcount(str1,str2,length1)<<endl;
    56 }
  • 相关阅读:
    java扫描文件夹下面的所有文件(递归与非递归实现)
    JAVA8 十大新特性详解
    Intellij IDEA创建的Web项目配置Tomcat并启动Maven项目
    Spring官网下载各版本jar包
    史上最全Java面试题(带全部答案)
    深入JVM对象引用
    23种设计模式全解析
    git difftool和mergetool图形化
    Java技术——你真的了解String类的intern()方法吗
    动手实现一个vue中的模态对话框组件
  • 原文地址:https://www.cnblogs.com/wxdjss/p/5709986.html
Copyright © 2011-2022 走看看