1 条题解

  • 1
    @ 2024-1-13 18:49:34
    #include<iostream>
    using namespace std;
    int n,ans=0;
    int wo(int x,int y,bool op){//清算序列
    	if(op) x+=y;
    	else x-=y;
    	return x;
    }
    void search(int now,int wait,int nownum,bool op){//分别定义,当前总和,待运算序列,当前层操作数,待运算序列符号(1为+,0为-)
    	if(nownum==10){//触底判断
    		if(wo(now,wait,op)==n)
    		ans++;
    		return;
    	}
    	search(now,wait*10+nownum,nownum+1,op);//将当前操作数累入待运算序列
    	if(wait)//待运算序列不为0,则清算
    	for(int i=0;i<=1;i++)
    	search(wo(now,wait,op),0,nownum,i);
    	return;
    }
    int main(){
    	cin>>n;
    	search(0,1,2,1);//搜索
    	cout<<ans;
    	return 0;
    }
    

    信息

    ID
    451
    时间
    1000ms
    内存
    256MiB
    难度
    5
    标签
    递交数
    49
    已通过
    21
    上传者