zoukankan      html  css  js  c++  java
  • 二十二:寻找组合

    问题 : 寻找组合
    题目描述

    现在有4个整数,分别为a,b,c,d(位于1-9之间)请在这四个数之间填上+-*/(每一步计算的结果都是只取整数部分)使其结果为100。如下的式子便是满足此组合的式子:(注意:计算不论优先级,先计算a和b,再将结果与c运算,最后和d。)
    1+3*5*5=100
     2+3*4*5=100
     3+2*5*4=100
     4+6*2*5=100
     5+5*5*2=100
     6+6*9-8=100
     7-2*4*5=100
     8+4+8*5=100
     9*2*6-8=100

    请找出所有的这样的组合,并输出有多少个这样的组合。

     1 #include<stdio.h>
     2 char str[4]={'-','+','*','/'};
     3 int k=0;
     4 void fun(int a[],int i,char str1[],int b){
     5     int m;
     6     if(i==3){
     7         if(b==100){
     8             k++;
     9             printf("%d%c%d%c%d%c%d=%d
    ",a[0],str1[0],a[1],str1[1],a[2],str1[2],a[3],b);
    10         }
    11     return;
    12     }
    13     for(int n=0;n<4;n++){
    14         m=b;
    15         switch(str[n]){
    16             case '-':m=m-a[i+1],str1[i]='-';break;
    17             case '+':m=m+a[i+1],str1[i]='+';break;
    18             case '*':m=m*a[i+1],str1[i]='*';break;
    19             case '/':m=m/a[i+1],str1[i]='/';break;
    20         }
    21         fun(a,i+1,str1,m);        
    22     }
    23 }
    24 int main(){
    25     int a[4],i,b;
    26     char str1[4];
    27     for(a[0]=1;a[0]<10;a[0]++){
    28         for(a[1]=1;a[1]<10;a[1]++){
    29             for(a[2]=1;a[2]<10;a[2]++){
    30                 for(a[3]=1;a[3]<10;a[3]++){
    31                     b=a[0];
    32                     i=0;
    33                     fun(a,i,str1,b);
    34                 }
    35             }
    36         }
    37     }
    38     printf("%d",k);
    39 }
  • 相关阅读:
    Java怎样对一个属性设置set或get方法的快捷键
    小程序怎样控制rich-text中的<img>标签自适应
    Java中Arrys数组常用的方法
    Java 怎样实现调用其他方法
    Java保留两位小数
    解决ajax请求跨域
    rand(7) 到rand(10)
    c++生成随机数
    批量该文件名
    正则表达式(=)
  • 原文地址:https://www.cnblogs.com/yuming226/p/8150874.html
Copyright © 2011-2022 走看看