首页 > 其他分享 >ZCMU-1133

ZCMU-1133

时间:2024-06-03 13:21:17浏览次数:20  
标签:last 1133 len ZCMU int flag num include

image
image

emm就直接看的前辈的了。


#include <stdio.h>
#include <string.h>
#include <algorithm>
//我不成熟的想法是两成遍历
//但感觉会时间超限,但没有先想到深度搜索 
using namespace std;
int n,t;
int num[101];
//存放输入情况 
int r[101];
//记录可能情况 
bool flag;
void dfs(int len,int k,int last)
{
    int result;
    if(last==0){
        flag=false;
        for(int i=0;i<len;i++)
        if(i==0)printf("%d",r[i]);
        else printf("+%d",r[i]);
        printf("\n");
        return ;
    }
    for(int i=k;i<n;i++){
           
        if(i==k||num[i]!=num[i-1]&&last-num[i]>=0)// 去除重复的操作
        {
          //这里的i==k或者后面情况是
          //为了保证遇到前后相同时,自身不会被重用
          //并且还能使用后面的情况 
          r[len]=num[i];
          dfs(len+1,i+1,last-num[i]);
        }      
    }
}
int main()
{
    while(scanf("%d%d",&t,&n)!=EOF)
    {
        memset(r,0,sizeof(r));
        memset(num,0,sizeof(num));
        if(t==n&&n==0)break;
        flag=true;
        for(int i=0;i<n;i++)
        scanf("%d",&num[i]);
        printf("Sums of %d:\n", t);
        dfs(0,0,t);
        if(flag)printf("NONE\n");
    }
    return 0; 
}

标签:last,1133,len,ZCMU,int,flag,num,include
From: https://www.cnblogs.com/hai-zei/p/18228647

相关文章

  • ZCMU-1149
    就是背包01问题#include<iostream>#include<cstring>/*01背包问题*/usingnamespacestd;constintmaxn=120;constintmaxm=1e5+10;intdp[maxm],a[maxm];intn,m;intmain(){intt;cin>>t;while(t--){cin>>n;......
  • ZCMU-1144
    简单问题:就只是如何降低时间的问题罢了:本来这种方法以前学过但是没怎么用所以不太灵活、#include<stdio.h>#definemaxn1000010intsum[maxn]={0};voidSum(){ for(inti=1;i<=maxn;i++){for(intj=i;j<=maxn;j+=i){sum[j]++;//表示......
  • ZCMU-1120
    就这样#include<cmath>#include<cstdio>#include<iostream>usingnamespacestd;intmain(){inti,k,sum;while(~scanf("%d",&k)){i=0,sum=0;k=abs(k);//前面设置成0的所以//先加后用while(+......
  • ZCMU-1179
    我的错误:明知道是大数问题但不是不想写数组或者字符串的结构。思路网上查阅后发现可以使用JAVA的大数类型做。若不使用JAVA则就是整型数组或者字符串的情况。将a^b结果放在数组当中,实时更新数组,每次用a去乘当前数组,记得加长。因为上面情况得到的结果是倒序的不方便比......
  • ZCMU-1156
    思路:要改变的是一个范围的情况,所以正常情况下会超时。查阅后知道应该用一个叫做树状数组的结构。查阅和树状数组的后续情况这个也不错注意:我没怎么看懂,可能没太仔细看。树状数组当中存在的是前后的差,所以每次变动只是在start,end+1变动.因为一直上去的是lowbi......
  • ZCMU-1153
    思路一个感觉是规律问题的数学问题因为输入的是n所以要的出有关n的关系或者关系有关排序,所以可以从位次入手,设双胞胎前一个位置在ai,后一个在bi.Sum(bi-ai)=(2+3+4+5+6+...+n+1)=(1+2+3+4+5+6+...+n)+n*1=((n+1)*n)/2+n;Sum(ai+bi)=(1+2+3+4+....+2n)=((1+2n)*(2*n))/2......
  • ZCMU-1136
    思路一个数学问题要知道1为奇数,2^x次方一定为偶数。偶数=奇数+奇数,而奇数=奇数*奇数,所以x一定要是奇数才可以。注意没告诉范围所以要往大的方向考虑其中1能够被任一整数整除,所以前面加上对1的判断参考(费马小定理)#include<stdio.h>intmain(){inti,n,temp......
  • ZCMU-1111
    与背包和动态规划有关(我认为)采用dp数组存放吃掉i千克食物要用掉的钱dp最开始要尽量的大方便过程中判断和最后的输出判断实时更新dp,保留最小的钱以前不知道的printf函数可以这样用fill函数填充数组,(开始,结束,填充值);C和C++结构体里面可以放函数学习#include<c......
  • ZCMU-1129
    数学公式题罢了学长1.斯特灵公式:2.对数公式(因为以10为底,得到的是10^x,所以最后向下取整加上1);#include<cstdio>#include<cmath>usingnamespacestd;constdoublePI=acos(-1);constdoublee=exp(double(1));intstr(intn){returnfloor(log10(sqrt(2*PI*n))+......
  • ZCMU-1110
    思路:-首先可以知道最少动就是从三个角对称的划分因为不是对称划分则会出现破坏了正三角,后面还要重新对好之后就可以进行推导(按三角形我没看懂)其中设底上截出来的三角形的底为i,则上面就是n-2*i-1;所以动的数就可以算出来:[6*i^2+(4-4n)i+(n*n-n)]/2;最小就是i=(......