凑算式
(如果显示有问题,可以参见【图1.jpg】)
比如:
6+8/3+952/714 就是一种解法, 5+3/1+972/486 是另一种解法。
这个算式一共有多少种解法?
注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。
//这段代码以前写的,今天刚好看到就拿来写博客了,用的递归实现的全排列,记得当时看这个递归看了半天才明白递归的过程,就是那个for循环里的含义,明白for循环的意思就明白这道题了。
#include <stdio.h>
#include <stdlib.h>
int sum;
void Swap(double *now,double *end)
{
double temp=*now;
*now=*end;
*end=temp;
}
void sort(double *a,int begin,int end)
{
if(begin==end)
{
double A=a[0],B=a[1],C=a[2];
double DEF=a[3]*100+a[4]*10+a[5];
double GHI=a[6]*100+a[7]*10+a[8];
if((A*C*GHI+B*GHI+C*DEF)/(C*GHI)==10)
{
sum++;
}
return;
}
for(int i=begin;i<end;i++)
{
Swap(&a[i],&a[begin]);//第i个开始和后面的挨个交换,一直到最后一个数
sort(a,begin+1,end);//i-->i+1
Swap(&a[i],&a[begin]);//还原两个交换的数
}
}
main()
{
double a[9]={1,2,3,4,5,6,7,8,9};
sort(a,0,9);
printf("%d",sum);
}