您当前的位置: 首页 > 

minato_yukina

暂无认证

  • 2浏览

    0关注

    138博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

例题6 立方体成像(LA 2995)

minato_yukina 发布时间:2022-03-21 15:06:29 ,浏览量:2

给你一个 n ∗ n ∗ n n*n*n n∗n∗n的立方体,有一些单位立方体已经没了.单位立方体重1,且颜色是单一的 给出前左右后顶六个视图,判断物体剩下的最大重量. 基本想法:首先如果某个视图里面有一个位置是".",那么那个视图对应视角的n个方块就要全部删完不可,否则会矛盾. 其次,如果出现颜色不同的情况,也得删删,而且不难发现由于每个方格颜色都是一样的,我们可以用三元组 c o l o r ( x , y , z ) color(x,y,z) color(x,y,z)代表一个方格的颜色,颜色不同就一直去删掉. 注意坐标系的建立,x轴是怼向屏幕里面的,y轴向右.建立的是右手系. 补题后感想:一直狂错,过不了样例.就是书里面的get函数太容易出错了,这题太细节了.日后再做做吧.

/*
*/
#include
using namespace std;
typedef long long ll;
const int maxn = 15;
const int INF = 1e9+7;
typedef pair pii;
char color[maxn][maxn][maxn];
char view[maxn][maxn][maxn];
int n;
void get(int k,int i,int j,int len,int &x,int &y,int &z){
	if(k==0){
		x = len; y = j;z=i;
	}
	if(k==1){
		x=n-1-j;y=len;z=i;
	}
	if(k==2){
		x= n-1-len;y=n-1-j;z=i;
	}
	if(k==3){
		x=j;y=n-1-len;z=i;
	}
	if(k==4){
		x=n-1-i;y=j;z=len;
	}
	if(k==5){
		x=i;y=j;z=n-1-len;
	}
}
int main(){
//	freopen("1.txt","r",stdin);
	while(cin>>n){
		if(n==0) break;
		getchar();
		for(int i=0;i            
关注
打赏
1663570241
查看更多评论
0.0501s