`
guancloud911012
  • 浏览: 16359 次
社区版块
存档分类
最新评论

第1题-【组合】

 
阅读更多

/*
1. 给定等式 A B C D E 其中每个字母代表一个数字,且不同数字对应不
D F G 同字母。编程求出这些数字并且打出这个数字的
+ D F G 算术计算竖式。

───────

X Y Z D E
*/

#include "iostream"
using namespace std;

 

void swap(int arr[], int i1, int i2)
{
int tmp;
tmp = arr[i1];
arr[i1] = arr[i2];
arr[i2] = tmp;
}

void perm(int arr[], int x, int y)
{
if(x > y)
{
int op1 = arr[0]*10000 + arr[1]*1000 + arr[2]*100 + arr[3]*10 +arr[4];
int op2 = arr[3]*100 + arr[5]*10 +arr[6];
int ret = arr[7]*10000 + arr[8]*1000 + arr[9]*100 + arr[3]*10 + arr[4];
if(op1 + 2*op2 == ret)
{
printf("%6d\n", op1);
printf("%6d\n", op2);
printf("+");
printf("%5d\n", op2);
printf("------\n");
printf("%6d\n", ret);
}
}
else
{
for(int i=x; i<=y; i++)
{
swap(arr, x, i);
perm(arr, x+1, y);
swap(arr, x, i);
}
}
}

int main()
{
int arr[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
perm(arr, 0, 9);
return 0;
}

 

排列组合算法资料:

http://guancloud911012.iteye.com/blog/1513134

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics