码迷,mamicode.com
首页 > 其他好文 > 详细

二十二:寻找组合

时间:2017-12-30 19:57:02      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:部分   题目   void   计算   int   描述   clu   ++   std   

问题 : 寻找组合
题目描述

现在有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\n",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 }

 

二十二:寻找组合

标签:部分   题目   void   计算   int   描述   clu   ++   std   

原文地址:https://www.cnblogs.com/yuming226/p/8150874.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!