我的代码:
#include<bits/stdc++.h>
using namespace std;
int t[21][21],m[21][21],n,k,p[401],d[21],a[21],sec,pn;
void make(){
for(int i=0;i<pn;i++){
if(t[p[i]][a[p[i]]]==0){
p[i]=0;
}
if(p[i]!=0&&d[m[p[i]][a[p[i]]]]==0){
d[m[p[i]][a[p[i]]]]=p[i];
}
}for(int i=1;i<=n;i++){
if(d[i]){
t[d[i]][a[d[i]]]--;
}if(t[d[i]][a[d[i]]]==0){
a[d[i]]++;
d[i]=0;
}
}while(p[0]==0){
for(int i=1;i<pn;i++){
p[i-1]=p[i];
}p[pn]=0;
pn--;
}
}
int main(){
cin>>n>>k;
for(int i=0;i<k;i++){
a[i]=1;
}
pn=n*k-1;
for(int i=0;i<n*k;i++){
cin>>p[i];
}for(int i=1;i<=k;i++){
for(int j=1;j<=n;j++){
cin>>m[i][j];
}
}for(int i=1;i<=k;i++){
for(int j=1;j<=n;j++){
cin>>t[i][j];
}
}while(pn>=0){
make();
sec++;
}cout<<sec;
return 0;
}
然而不幸的是,万紫千红。。。
帮忙找错吧,谢谢啊路人。