二十二:寻找组合
程序员文章站
2024-03-18 12:29:52
...
问题 : 寻找组合
题目描述
现在有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
题目描述
现在有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
请找出所有的这样的组合,并输出有多少个这样的组合。
#include<stdio.h>
char str[4]={'-','+','*','/'};
int k=0;
void fun(int a[],int i,char str1[],int b){
int m;
if(i==3){
if(b==100){
k++;
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);
}
return;
}
for(int n=0;n<4;n++){
m=b;
switch(str[n]){
case '-':m=m-a[i+1],str1[i]='-';break;
case '+':m=m+a[i+1],str1[i]='+';break;
case '*':m=m*a[i+1],str1[i]='*';break;
case '/':m=m/a[i+1],str1[i]='/';break;
}
fun(a,i+1,str1,m);
}
}
int main(){
int a[4],i,b;
char str1[4];
for(a[0]=1;a[0]<10;a[0]++){
for(a[1]=1;a[1]<10;a[1]++){
for(a[2]=1;a[2]<10;a[2]++){
for(a[3]=1;a[3]<10;a[3]++){
b=a[0];
i=0;
fun(a,i,str1,b);
}
}
}
}
printf("%d",k);
}
上一篇: python异常处理