zoukankan      html  css  js  c++  java
  • C语言 · 猜算式

    题目:猜算式

    看下面的算式:

    □□ x □□ = □□ x □□□

    它表示:两个两位数相乘等于一个两位数乘以一个三位数。 如果没有限定条件,这样的例子很多。

    但目前的限定是:这9个方块,表示1~9的9个数字,不包含0。 该算式中1至9的每个数字出现且只出现一次!

    比如: 46 x 79 = 23 x 158 54 x 69 = 27 x 138 54 x 93 = 27 x 186 .....

    请编程,输出所有可能的情况!

    注意:左边的两个乘数交换算同一方案,不要重复输出!

    要求考生把所有函数写在一个文件中。调试好后,存入与考生文件夹下对应题号的“解答.txt”中即可。 相关的工程文件不要拷入。 对于编程题目,要求选手给出的解答完全符合ANSI C标准,不能使用c++特性; 不能使用诸如绘图、中断调用等硬件相关或操作系统相关的API。

     1 #include<stdio.h>
     2 #include<string.h>
     3 bool use[10];//访问标记数组
     4 int a[10];//判断a与b的积是否出现过
     5 int yin1,yin2,yin3,yin4;
     6 int count=0;
     7 void dfs(int begin){  
     8     if(begin==10){
     9         yin1=a[1]*10+a[2];
    10         yin2=a[3]*10+a[4];
    11         yin3=a[5]*10+a[6];
    12         yin4=a[7]*100+a[8]*10+a[9];
    13         if((yin1*yin2==yin3*yin4) && yin1<yin2){
    14             count++;
    15             printf("%2d*%2d = %2d*%3d
    ",yin1,yin2,yin3,yin4);
    16         }
    17         return; 
    18     }  
    19     for(int i=1; i<=9; i++){
    20         if(!use[i]){
    21             use[i] = true;
    22             a[begin]=i;
    23             dfs(begin+1);
    24             use[i] = false;
    25         }
    26     }  
    27 }  
    28 int main(){  
    29     memset(use,false,sizeof(use));
    30     dfs(1);
    31     printf("
    共有%d个.",count);
    32     return 0;
    33 }
  • 相关阅读:
    JQuery Ajax动态生成表格
    简单模拟JQuery框架
    事务和锁学习
    Js面向对象和数据类型内存分配
    Spring.Net学习 控制反转(IoC)和面向切面编程(AOP)
    html <pre>标签
    裸眼3D
    sysobjects syscolumns和SysTypes笔记
    JQuery EasyUi练习Demo(带源码)
    Oracle 游标使用大全
  • 原文地址:https://www.cnblogs.com/panweiwei/p/6682826.html
Copyright © 2011-2022 走看看