HDU 6330 Problem L. Visual Cube---(模拟) 2018 Multi-University Training Contest 3

本文提供了一道HDU 6330的题解,题目要求根据给定的长方体尺寸打印出相应的图形。作者通过使用C++实现了一个模拟算法,该算法能够正确地绘制出由加号、减号、竖线和斜线组成的长方体形状。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我是比较讨厌写模拟题的,场上交给队友了,自己没有写,想了想还是补补把=-=。

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6330

题意:给你三个值,x,y,z,分别代表,长方体的长宽高。让你打印这个图形。

题解:模拟一下就过了,没什么难度。

#include<bits/stdc++.h>
using namespace std;
char a[100][100];
int main(){
    int z;
    cin >> z;
    while(z--){
        int x,y,z;
        scanf("%d%d%d",&x,&y,&z);
        int n = 2*y + (2*z+1);int m = y*2 + (x*2+1);
        for(int i = 0 ; i <= 100 ; i ++)
        	for(int j = 0 ; j <= 100 ; j ++)
        		a[i][j] = '.';
        for(int i = 1 ; i <= 2*y ; i ++){
        	if(i&1){
        		for(int j = m - i+1 ; j >= m - x*2+1 - i; j -- ){
        			if(j&1)
        				a[i][j] = '+';
        			else 
        				a[i][j] = '-';
				}
			}
			else {
				for(int j = m - i+1 ; j >= m - x*2+1 - i; j -- ){
        			if(j&1)
        				continue;
        			else 
        				a[i][j] = '/';
				}
			}
		}
		for(int i = 2*y + 1 ; i <= n ; i ++){
			if(i&1){
        		for(int j = 1 ; j <= x*2+1; j ++ ){
        			if(j&1)
        				a[i][j] = '+';
        			else 
        				a[i][j] = '-';
				}
			}
			else {
				for(int j = 1 ; j <= x*2+1; j ++ ){
        			if(!(j&1))
        				continue;
        			else 
        				a[i][j] = '|';
				}
			}
		}
		int cnt = 0;
		for(int i = m ; i >= m - 2*y  +1; i --){
        	if(i&1){
        		for(int j = 1+cnt ; j <= 2*z +1+ cnt; j ++ ){
        			if(j&1)
        				a[j][i] = '+';
        			else 
        				a[j][i] = '|';
				}
			}
			else {
				for(int j = 1 +cnt; j <= 2*z + 1 +cnt; j ++ ){
        			if(j&1)
        				continue;
        			else 
        				a[j][i] = '/';
				}
			}
			cnt++;
		}
		for(int i = 1 ; i <= n ; i ++){
			for(int j = 1; j <= m ; j ++)
				cout << a[i][j] ;
			cout << endl;
		}
    }
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值