请大师帮忙解决,谢谢!

解决方案 »

  1.   

    仅供参考://n个(2<=n<=20)整数(整数范围-10<=x<=10),判断是否可以从这n个数中找到若干个数,其和为10
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <algorithm>
    using namespace std;
    int MAXN=20;
    int MINN=2;
    int x[20];
    int n,i,j,k,sum;
    int main() {
        srand((unsigned)time(NULL));
        n=MINN+rand()%(MAXN-1);
        for (i=0;i<n;i++) {
            x[i]=-10+rand()%21;
            printf("%d,",x[i]);
        }
        printf("\n");
        sort(&x[0],&x[n]);
        do {
            for (i=2;i<=n;i++) {
                sum=0;
                k=n/2-i/2;
                for (j=k;j<k+i;j++) {
                    sum+=x[j];
                }
                if (10==sum) {
                    for (j=k;j<k+i;j++) {
                        if (j==k+i-1) {
                            printf("%d==10\n",x[j]);
                        } else {
                            printf("%d+",x[j]);
                        }
                    }
                    printf("YES\n");
                    return 1;
                }
            }
        } while (next_permutation(&x[0],&x[n]));
        printf("NO\n");
        return 0;
    }