灵异问题
  • 板块学术版
  • 楼主Xttttr
  • 当前回复4
  • 已保存回复4
  • 发布时间2021/8/2 13:08
  • 上次更新2023/11/4 12:14:32
查看原帖
灵异问题
440219
Xttttr楼主2021/8/2 13:08
#include<bits/stdc++.h>
using namespace std;
int n,m,a[350]={0},b[120]={0},d[41][41][41][41],p[5]={0};
int main()
{
	memset(d,0,sizeof(d));
	cin>>n>>m;
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
	}
	for(int i=1;i<=m;i++)
	{
		cin>>b[i];
		p[b[i]]++;
	}
	cout<<d[0][0][0][0]<<endl;
	for(int l=0;l<=p[1];l++)
	{
		for(int k=0;k<=p[2];k++)
		{
			for(int j=0;j<=p[3];j++)
			{
				for(int i=0;i<=p[4];i++)
				{
					if(i>0)d[l][k][j][i]=max(d[l][k][j][i-1],d[l][k][j][i]);
					if(j>0)d[l][k][j][i]=max(d[l][k][j-1][i],d[l][k][j][i]);
					if(k>0)d[l][k][j][i]=max(d[l][k][j][i],d[l][k-1][j][i]);
					if(l>0)d[l][k][j][i]=max(d[l][k][j][i],d[l-1][k][j][i]);
					if(l==0&&k==0&&j==0&&i==0) cout<<d[l][k][j][i]<<endl;
					if(l==0&&k==0&&j==0&&i==0) cout<<a[i*4+j*3+k*2+l]<<endl;
					d[l][k][j][i]+=a[i*4+j*3+k*2+l];
					if(l==0&&k==0&&j==0&&i==0) cout<<d[l][k][j][i]<<endl;
					//printf("%d %d %d %d %d\n",i,j,k,l,dp[i][j][k][l]);
				}
			}
		}
	}
	return 0;
}

以上这份代码,经测试,d[0][0][0][0]的值总是赋成3

d[41][41][41][41]={0}

这份代码依然有此问题

但是

d[41][41][41][41]={{{{1}}}}

只要花括号里不为零,d[0][0][0][0]就会被赋值成0

到底为啥啊

2021/8/2 13:08
加载中...