zoukankan      html  css  js  c++  java
  • poj3187

    一、题意:给定n,求1~n的一个排列,这个排列需要满足以下两个要求:1、杨辉三角最后的和为sum  2、字典序最小

    二、思路:暴力枚举每一个排列,然后计算和并与sum进行比较。这里我比较费解的是为什么没超时。。。

    三、代码:

      

    #include"iostream"
    #include"stdio.h"
    #include"algorithm"
    using namespace std;
    
    int n,sum;
    
    int GetArraySum(int *a)
    {
        for(int i=n-1;i>0;i--)
        {
            for(int j=0;j<i;j++)
            {
                a[j]=a[j]+a[j+1];
            }
        }
        return a[0];
    }
    
    void GetAns()
    {
        int a[15],b[15];
        for(int i=0;i<n;i++)
        {
            a[i]=i+1;
        }
        do
        {
            for(int i=0;i<n;i++)
                b[i]=a[i];
            if(GetArraySum(b)==sum)
            {
                for(int i=0;i<n-1;i++)
                {
                    cout<<a[i]<<' ';
                }
                cout<<a[n-1]<<endl;
                return;
            }
    
        }while(next_permutation(a,a+n));
    }
    
    int main()
    {
        while(scanf("%d%d",&n,&sum)==2)
        {
            GetAns();
        }
        return 0;
    }
    

      

  • 相关阅读:
    JSOI2010 满汉全席
    LNOI2014 LCA
    BZOJ3689 异或之
    Codeforces Round #553 div.2
    AHOI2013 差异
    SDOI2016 生成魔咒
    NOI2006 最大获利
    没有过的题QAQ
    NOI2014 动物园
    HDU4622 Reincarnation
  • 原文地址:https://www.cnblogs.com/acm-jing/p/9605251.html
Copyright © 2011-2022 走看看