1 条题解

  • 0
    @ 2025-8-9 18:09:13

    中规中矩的递推题

    #include<bits/stdc++.h>
    using namespace std;
    int a[4010];//一眼递推法
    int main(){
    	int n;
    	cin>>n;//输入
    	a[1]=1;//初始
    	for(int i=2;i<=n;i++){//开始递推
    		int b=a[i-1],c=i,d=b-c;
    		if(d<=0) a[i]=a[i-1]+i;//如果不是正整数的话就加i
    		else if(d>0){//是正整数
    			int flag=0;//属性的flag
    			for(int j=1;j<=i;j++){//开始遍历
    				if(d==a[j]) flag=1;//如果出现过,中大奖辣!
    			}
    			if(flag==1) a[i]=a[i-1]+i;//你过关!
    			else a[i]=a[i-1]-i;//该罚!
    		}	
    	}
    	sort(a+1,a+n+1);//从小到大
    	for(int i=1;i<=n;i++){
    		cout<<a[i]<<" ";//输出
    	}
    	return 0;//完美
    }

    信息

    ID
    1342
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者