蓝桥杯真题15省5-九数组分数1,2,3...9 这九个数字组成一个分数,其值恰好为13,如何组法?下面的程序实现了该功能,请填写划线部分缺失的代码。

    科技2022-08-26  96

    问题描述

    1,2,3...9 这九个数字组成一个分数,其值恰好为1/3,如何组法? 下面的程序实现了该功能,请填写划线部分缺失的代码。 #include <stdio.h> void test(int x[]) { int a = x[0]*1000 + x[1]*100 + x[2]*10 + x[3]; int b = x[4]*10000 + x[5]*1000 + x[6]*100 + x[7]*10 + x[8]; if(a*3==b) printf("%d / %d\n", a, b); } void f(int x[], int k) { int i,t; if(k>=9){ test(x); return; } for(i=k; i<9; i++){ {t=x[k]; x[k]=x[i]; x[i]=t;} f(x,k+1); _____________________________________________ // 填空处 } } int main() { int x[] = {1,2,3,4,5,6,7,8,9}; f(x,0); return 0; }

    输入

    没有输入。 输出

    输出划线部分缺少的代码。 题目限制

    1s, 1024KiB for each test case. 提示

    请用printf或cout直接输出划线部分缺少的代码。 注意:输出的代码中,若非必要,勿加空格! 例如,假设需要填写的代码为:“f(x,y)”,则可编写如下程序输出答案:

    #include <stdio.h> int main() { printf("f(x,y)"); return 0; }

    思路: 这道题不难。 根据题目意思和已有的代码,很容易能够得出这是想要找出来全排列。因此这就是递归生成全排列的。 递归生成全排列一直不变的思维就是,将数组的元素进行交换,但是交换完必须再换过来。因此填空处的代码就是再交换一次,不然数组就乱了!

    答案:{t=x[k]; x[k]=x[i]; x[i]=t;}

    #include <stdio.h> int main () { printf("{t=x[k]; x[k]=x[i]; x[i]=t;}"); return 0; }

    这里要吐槽一下,不晓得它算不算是个问题,在提交的时候,不可以少花括号,不可以少中间的空格,但是这些少了的话又不影响程序实际的运行结果…因此以后多注意题目要求的格式吧!共勉!

    Processed: 0.018, SQL: 9