数据太水
查看原帖
数据太水
1127386
s12914楼主2024/11/29 20:49

优化暴搜也能过?时间复杂度超了吧。

数据水了吧,强烈要求加强数据。

未优化代码(40)

#include<iostream>
#include<cmath>
using namespace std;
int n,a[355],k,d=1e8;
void dfs(int x,int step,int k){
	if(x==0){
		d=min(d,step);
		return ;
	}
	for(int i=k;i>=1;i--){
		if(x>=a[i]){
			dfs(x-a[i],step+1,i);
		}
	}
}
int main(){
	cin>>n;
	for(int i=1;i<=350;i++){
		if(i*i>100000){
			k=i-1;
			break;
		}
		a[i]=i*i;
	}
	dfs(n,0,k);
	cout<<d;
	return 0;
} 

剪枝dfs(100)

void dfs(int x,int step,int k){
	if(x==0){
		d=min(d,step);
		return ;
	}
	if(step>=d) return ;
	for(int i=k;i>=1;i--){
		if(x>=a[i]){
			dfs(x-a[i],step+1,i);
		}
	}
}

n=350的暴搜优化一下也能过?有没有大佬来为本蒟蒻解释一下,是数据水了还是本身就能过?

2024/11/29 20:49
加载中...