问题描述
九数组分数
1,2,3...9 这九个数字组成一个分数,其值恰好为1/3,如何组法?
下面的程序实现了该功能,请填写划线部分缺失的代码。
1 #include <stdio.h> 2 3 void test(int x[]) 4 { 5 int a = x[0] * 1000 + x[1] * 100 + x[2] * 10 + x[3]; 6 int b = x[4] * 10000 + x[5] * 1000 + x[6] * 100 + x[7] * 10 + x[8]; 7 8 if (a * 3 == b) printf("%d / %d\n", a, b); 9 } 10 11 void f(int x[], int k) 12 { 13 int i, t; 14 if (k >= 9) 15 { 16 test(x); 17 return; 18 } 19 20 for (i = k; i<9; i++) 21 { 22 {t = x[k]; x[k] = x[i]; x[i] = t; } 23 f(x, k + 1); 24 _____________________________________________ // 填空处 25 } 26 } 27 28 int main() 29 { 30 int x[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 31 f(x, 0); 32 return 0; 33 }
注意:只填写缺少的内容,不要书写任何题面已有代码或说明性文字。
思路
这就是简单的回溯,状态的保持
答案
t = x[k]; x[k] = x[i]; x[i] = t;