UVA488 Triangle Wave 题解

题目有点难懂,我这里给个容易理解些的翻译:

翻译

输入描述

给定一个数 t t t,表示数据组数。

对于每组数据,包含两个整数 n , m n,m n,m

输出描述

对于任意一组数据,每组包括 ( 2 n − 1 ) × m (2n - 1) \times m (2n1)×m 行。

i × j ( 1 ≤ i ≤ n , q ≤ j ≤ m ) i\times j(1 \le i \le n,q \le j \le m) i×j(1in,qjm) 行包括 i i i 个数字 i i i

i × j ( n + 1 ≤ i ≤ 2 n − 1 , q ≤ j ≤ m ) i\times j(n + 1 \le i \le 2n-1,q \le j \le m) i×j(n+1i2n1,qjm) 行包括 2 n − i 2n - i 2ni 个数字 2 n − i 2n - i 2ni

注:除最后一个波形外,每个单独的波形后面都有一个空行。

思路

对于每组数据,循环 m m m 次,先处理 1 ≤ i ≤ n 1 \le i \le n 1in 的情况。枚举 i i i,每次循环 i i i 次,每次输出 1 1 1 i i i 再换行即可。

for (int i = 1; i <= n; i++) {
	for (int j = 1; j <= i; j++) {
		cout << i;
	}
	cout << endl;
}

接下来,同样处理 n + 1 ≤ i ≤ 2 n − 1 n + 1 \le i \le 2n - 1 n+1i2n1 的情况。思考一下,其实这里就是把 i i i n − 1 n-1 n1 枚举到 1 1 1,每次循环 i i i 次,每次输出 1 1 1 i i i 再换行即可。

for (int i = n - 1; i >= 1; i--) {
	for (int j = 1; j <= i; j++) {
		cout << i;
	}
	cout << endl;
}

别忘了,UVA 是一个很卡格式的网站。除最后一个波形外,每个单独的波形后面都有一个空行。 所以处理完每一组以后判断是否为最后一行。如果不是,就输出换行。

if (t != 1 && m != 1) {
	cout << endl;
}

接下来就是代码。

code

#include <bits/stdc++.h>
using namespace std;
int t, n, m;

int main() {
	cin >> t;
	while (t--) {
		cin >> n >> m;
		while (m--) {
			for (int i = 1; i <= n; i++) {
				for (int j = 1; j <= i; j++) {
					cout << i;
				}
				cout << endl;
			}
			for (int i = n - 1; i >= 1; i--) {
				for (int j = 1; j <= i; j++) {
					cout << i;
				}
				cout << endl;
			}
			if (t != 1 && m != 1) {
				cout << endl;
			}
		}
	}
	return 0;
}

完结撒花!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值