各位神ben求求了,为什么machine数组里是奇怪的东西`
查看原帖
各位神ben求求了,为什么machine数组里是奇怪的东西`
430967
xb_Dony楼主2021/11/3 20:48
#include<bits/stdc++.h>
using namespace std;
/*inline int read()
{
	int s=0,d=1;char ch=getchar();
	while (ch<'0'||ch>'9'){if (ch=='-') d=-1;ch=getchar();}
	while (ch>='0'&&ch<='9'){s=s*10+ch-48;ch=getchar();}
	return s*d;
}*/
struct machine11{
	int jiqi,shijian; 
}gongjian[1005][1005];//每一行是每个工件,每一列是第i个工序(机器,时间)
	
int main()				//第i个工件第j个工序的机器和时间;
{
	int m,n; 
	int shunxv[1000];
	cin>>m;
	cin>>n;
	int machine[m][9000];//如果不用动态数组就全是0,为啥
	memset(machine,0,sizeof(machine));
	for(register int i=1;i<=m*n;i++){
		cin>>shunxv[i];
	}
	for(register int i=1;i<=n;i++){
		for(int j=1;j<=m;j++) cin>>gongjian[i][j].jiqi;		 
	}
	for(register int i=1;i<=n;i++){
		for(int j=1;j<=m;j++) cin>>gongjian[i][j].shijian;
	}
	//读入
    int lsp=0,ans=0;
	int gongxv2[1005]={1};
	for(int i=1;i<=n*m;i++){
		int now=shunxv[i];
		int jiqi2,shijian2;
		
			jiqi2=gongjian[now][gongxv2[now]].jiqi;
			shijian2=gongjian[now][gongxv2[now]].shijian;
			for(int i=1;i<=1000;i++)
			{
				if(machine[jiqi2][i]==0)lsp++;
				if(lsp<shijian2&&machine[jiqi2][i+1]!=0) lsp=0;
				else if(lsp==shijian2) 
				{
					for(int j=gongjian[now][gongxv2[now-1]].shijian;j<=shijian2;i++)machine[jiqi2][j]=1;
					lsp=0;
					break;
				}
			}	
			
			gongxv2[now]++;	
	}
	for(int i=1;i<=m;i++)
	{	int aaa=ans;
		for(int j=1;j<=100;j++)if(machine[i][j]==1)ans=j;
		ans=max(ans,aaa);
	}
	cout<<ans;
	return 0;
}
2021/11/3 20:48
加载中...