竞赛算法第二版--竖式问题

竖式问题。找出所有形如abc*de(三位数乘以两位数)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。输入数字集合(相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。具体格式见样例输出(为了便于观察,竖式中的空格改用小数点显示,但所写程序中应该输出空格,而非小数点)。

样例输入:

2357                (可以看做一个集合)。

样例输出:

<1>

..775           (在集合里面)         

X..33           (在集合里面)       

-----

.2325        (在集合里面)

2325.         (在集合里面)

-----

25575        (在集合里面)

The number of solutions = 1

一 、 问题分析

那个集合就是我们判断程序的标准,我们可以把判断条件作为组成一个新的字符串。然后进行判断。

二 、代码

  1. #include <iostream>
  2. #include<stdio.h>
  3. #include <string.h>
  4. using namespace std;
  5. int t[100][100];            //大的数组在main函数外面开辟,在里面可能导致异常。
  6. int main(int argc, char** argv) { 
  7.        int count=0;            
  8.        char s[20],buf[99];
  9.        scanf("%s",s);
  10.        for(int i=100;i<1000;i++)
  11.        for(int j=10;j<100;j++)
  12.        { 
  13.          int ok=1;
  14.          int x=i*j;
  15.          int y=i*(j/10);
  16.          int k=i*(j%10);
  17.          sprintf(buf,"%d%d%d%d%d",x,i,j,y,k);         //将输出到保存在buf里面
  18.          for(int w=0;w<strlen(buf);w++)
  19.          {
  20.              if(strchr(s,buf[w])==NULL)                   //一个字符串中搜索单个字符
  21.              ok=0;
  22.          }
  23.              if(ok)
  24.              {   count++;
  25.                  printf("<%d>\n  %5d\nX  %4d\n ------\n %5d\n %4d\n %5d\n",count,i,j,y,k,x);
  26.                
  27.              }
  28.       
  29.        }
  30.       printf("The number of the solution %d",count);
  31. }   

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值