等腰三角形[蓝桥杯]

本文介绍了如何使用C++编写代码来打印等腰三角形的字符表示,包括计算周长、存储字符、指针操作以及逐行打印的过程。作者提供了详细步骤和示例代码,欢迎读者批评指正。

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

题目描述

在这里插入图片描述

输入样例
5
输出样例
....1
...2.1
..3...2
.4.....1
567891011

思路

首先计算等腰三角形的周长,将其所需的字符用一个字符串存储,然后一行一行打印
1.打印腰,共n-1行,定义一个指向字符串的头指针和尾指针,分别用于打印左腰字符和右腰字符
2.打印底,共一行,长度为2n-1

AC代码

#include <iostream>
#include <cstring>
using namespace std;
string s; //存储等腰三角形所需字符 
int n;
int main()
{
	cin >> n;
	int len = 4 * n - 4; //等腰三角形两个腰长n, 底长2n-1,重复三个点(顶点、左下角、右下角),共4n-4
	for(int i = 1; ;i ++)
	{
		s += to_string(i);
		if(s.size() >= len) break;
	} 
	while(s.size() > len) s.pop_back(); //此时字符串存储的内容恰好是等腰三角形的所有字符
	
	int be_idx = 0, ed_idx = len - 1; //字符串s首指针,尾指针 

	//左腰,右腰(从上到下) 
	for(int i = 0; i < n - 1; i ++)
	{
		//每一行最开始的'.'
		for(int j = n - 1 - i; j > 0; j --) cout << ".";
		cout << s[be_idx ++];
		
		//每一行中间的的'.'
		if(i)
		{
			for(int j = 2 * i - 1; j > 0; j --) cout << ".";
			cout << s[ed_idx --];
		} 
		cout << endl;
	} 
	
	//底(从左到右) 
	for(int i = 0; i < 2 * n - 1; i ++) cout << s[be_idx ++]; 
	return 0; 
} 

欢迎大家批评指正!!!

### 蓝桥杯省赛 Python 编程题目 #### 输出特定字符图案 在蓝桥杯比赛中,有一类常见的题目涉及按照给定模式输出字符串或图形。例如,在中小学青少年组的赛事中有这样一道题:要求参赛者编写程序来绘制指定形状的文字艺术图[^1]。 对于这类问题的一个简单实例可以是打印三角形星号图案: ```python def print_triangle(height): for i in range(1, height + 1): spaces = ' ' * (height - i) stars = '*' * (2*i - 1) print(spaces + stars) print_triangle(5) ``` 此函数接受一个参数`height`代表要创建的等腰三角形的高度,并按行打印出相应大小的由星号组成的直角三角形。 #### 寻找最大矩形区域 另一个例子是从一系列整数列表中寻找能够构成的最大矩形面积的问题。这个问题出现在关于一面由不同高度柱子组成的墙壁上,目标是在这些柱子间找到可容纳的最大矩形空间[^2]。 下面是一个解决上述提到的最大矩形面积挑战的方法实现: ```python from typing import List def largest_rectangle_area(heights: List[int]) -> int: stack = [] max_area = 0 index = 0 while index < len(heights): if not stack or heights[stack[-1]] <= heights[index]: stack.append(index) index += 1 else: top_of_stack = stack.pop() area = (heights[top_of_stack] * ((index - stack[-1] - 1) if stack else index)) max_area = max(max_area, area) while stack: top_of_stack = stack.pop() area = (heights[top_of_stack] * ((index - stack[-1] - 1) if stack else index)) max_area = max(max_area, area) return max_area # 测试数据点 test_heights = [3, 2, 1, 5, 6, 2] result = largest_rectangle_area(test_heights) print(f"The largest rectangle area is {result}") ``` 这段代码定义了一个名为 `largest_rectangle_area` 的函数,它接收一串正整数值作为输入——每个值对应于墙体的一列砖头数量;通过维护单调栈的方式高效地计算出了能被包含在内的最大矩形面积。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值