1031 Hello World for U

该博客介绍了一种算法,用于将任意长度的字符串按照U形布局进行打印。代码实现了一个C++程序,根据输入字符串的长度动态调整U形结构的尺寸,确保其尽可能接近正方形。程序首先初始化二维字符数组,然后按照从左到右、从上到下、从右到左、从下到上的顺序填充字符。输出的U形字符串满足原始顺序,且两侧层数相等。
摘要由CSDN通过智能技术生成

不说废话先上代码原题链接

#include<bits/stdc++.h>
using namespace std;


string s;
char arr[100][100];


int in=1;
int l=0;
int cnt=0;


int main(){
	for(int i=0;i<100;i++){
		for(int j=0;j<100;j++)arr[i][j]=' ';
	}
	getline(cin,s);
	int n=s.length()-1;
	while(n>0){
		in++;
		n--;
		if(n>=2){
			l++;
			n-=2;
		}
	}
	
	for(int i=0;i<l;i++)arr[i][0]=s[cnt++];
	for(int i=0;i<in;i++)arr[l][i]=s[cnt++];
	for(int i=l-1;i>=0;i--)arr[i][in-1]=s[cnt++];
	for(int i=0;i<=l;i++){
		for(int j=0;j<in;j++){
			cout<<arr[i][j];
		}cout<<endl;
	}
	
}

具体思路

每次给底层一个两个共两个直到所有字母都分配完(两侧不能大于底层 每次先分配给中心)

按照u型顺序线性分配即可

中文释义

给定任意N字符串(≥5) 字符,要求您将字符组成U形。例如,helloworld可以打印为:

h   !
e   d
l   l
lowor

也就是说,字符必须按原始顺序打印,从左垂直线n1开始从上到下打印​ 字符,然后沿底线从左到右使用n2​ 字符,最后用n3沿垂直线自下而上​ 角色。更重要的是,我们希望U尽可能地平方,也就是说,必须满足n1​=n3​=最大{k | k≤n2​ 三个人≤n2​≤N}与n1​+n2​+n3​−2=N。
输入规格:
每个输入文件包含一个测试用例。每个大小写包含一个字符串,一行不少于5个字符,不超过80个字符。字符串不包含空格。
输出规格:
对于每个测试用例,按照描述中指定的U形打印输入字符串。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值