为什么不滚动60滚动AC
  • 板块题目总版
  • 楼主NOBenRen
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/6/29 19:21
  • 上次更新2024/6/29 21:43:51
查看原帖
为什么不滚动60滚动AC
928895
NOBenRen楼主2024/6/29 19:21

不滚动

#include <bits/stdc++.h>
using namespace std;
int n,m,t,w[105],v[105],a[105][205][205];
int main(){
    cin>>n>>m>>t;
    for(int i=1;i<=n;i++)cin>>w[i]>>v[i];
    for(int i=1;i<=n;i++)
    	for(int j=1;j<=m;j++)
    		for(int k=1;k<=t;k++){
    			if(w[i]>j||v[i]>t)a[i][j][k]=a[i-1][j][k];
    			else a[i][j][k]=max(a[i-1][j][k],a[i-1][j-w[i]][k-v[i]]+1);
			}
	cout<<a[n][m][t];
	return 0;
}

滚动

#include <bits/stdc++.h>
using namespace std;
int n,m,t,w[105],v[105],a[205][205];
int main(){
	cin>>n>>m>>t;
	for(int i=1;i<=n;i++)cin>>w[i]>>v[i];
	for(int i=1;i<=n;i++)
	    for(int j=m;j>=w[i];j--)
    		for(int k=t;k>=v[i];k--)
  				a[j][k]=max(a[j][k],a[j-w[i]][k-v[i]]+1);
	cout<<a[m][t];
	return 0;
}
2024/6/29 19:21
加载中...