思路:
我在做这道题时,我的大体思路是以从前面看的,先以俯视图为基础,以一竖行一竖行的进行赋值,先看正视图,如果左视图小于正视图的值,那么就以左视图的值为最后的值,否则以正视图的值为基础
代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<iomanip>
#include<cstring>
#include<string>
#include<cmath>
#include<stack>
#include<queue>
#include<vector>
#include<set>
#include<map>
#define ll long long
#define mes(x,y) memset(x,y,sizeof(x))
#define maxn 2147483648+30
using namespace std;
int main(){
int n,m,h;
while(cin>>n>>m>>h){
int qian[200],zuo[200],fu[200][200];
mes(qian,0);mes(zuo,0);mes(fu,0);
for(int i=0;i<m;i++){
cin>>qian[i];
}
for(int j=0;j<n;j++){
cin>>zuo[j];
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>fu[i][j];
}
}
for(int i=0;i<m;i++){//先以俯视图为基础,以一竖行一竖行的进行赋值,
for(int j=n-1;j>=0;j--){
if(fu[j][i]==1){
fu[j][i]=qian[i];
if(qian[i]>zuo[j]){
fu[j][i]=zuo[j];
}
}//先看正视图,如果左视图小于正视图的值,那么就以左视图的值为最后的值,否则以正视图的值为基础
}
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cout<<fu[i][j]<<" ";
}
cout<<endl;
}
}
return 0;
}