NYOJ-32-组合数

    xiaoxiao2021-04-16  28

    时间限制:3000 ms  |  内存限制:65535 KB

    难度:3

    输入

    输入n、r。

    输出

    按特定顺序输出所有组合。 特定顺序:每一个组合中的值从大到小排列,组合之间按逆字典序排列。

    样例输入

    5 3

    样例输出

    543 542 541 532 531 521 432 431 421 321

    描述

    找出从自然数1、2、... 、n(0<n<10)中任取r(0<r<=n)个数的所有组合。

    刚开始写的时候我想成让它们一个一个的输出,就用到了数组,后来发现不行,我不会写了,又想到他这个跟POJ上面那个放苹果的题有点相似,后来又听我们学长讲找到一组答案后可以一下子输出,不要让他们一个一个的输出。

    #include <stdio.h> void fun(int m,int n,int ans) { if (n==0) { printf("%d\n",ans);//找到答案后就一下子输出 return; } for (int i=m;i>=n;i--) { //i从大到小保证答案是逆序输出 fun(i-1,n-1,ans*10+i);//ans保证答案正确 } } int main(int agrc,const char *argv[]) { int m,n; scanf("%d%d",&m,&n); fun(m,n,0); //当前数字是m 还需填n个数字 当前答案是0 return 0; }

     

    转载请注明原文地址: https://ju.6miu.com/read-672647.html

    最新回复(0)