小白用深搜,奈何超时两样例,优化数次无解,待求大神指点迷津
  • 板块P2415 集合求和
  • 楼主freegt
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/7/14 16:51
  • 上次更新2023/11/3 09:52:09
查看原帖
小白用深搜,奈何超时两样例,优化数次无解,待求大神指点迷津
607150
freegt楼主2023/7/14 16:51

一开始并不知道这个题是推论题,就用了刚接触的深搜来,结果超时了,学艺不精不知道咋优化了,求大神指点迷津

#include<bits/stdc++.h>
using namespace std;
int a[31];
int book[31],b[31];
int n,s=0,r;
void dfs(int step,int m,int r){
	int sum=0;
	if(step==r+1){
		sum=0;
		for(int i=1;i<=r;i++){
			sum+=b[i];
		}
		s+=sum;
		return; 
	}
	for(int i=m;i<=n;i++){
		if(book[i]==0){
			b[step]=a[i];
			book[i]=1;
			dfs(step+1,i+1,r);
			book[i]=0;
		}
	}
	return;
}
int main(){
	int i=1;
	do{
		scanf("%d",&a[i++]);	
	}while(getchar()!='\n');
//	cout<<"cs1";
	n=i-1;
//	cout<<n<<endl;
	for(int j=1;j<=n;j++){
		dfs(1,1,j);
	}
	cout<<s;
	

	
	return 0;
} 
2023/7/14 16:51
加载中...