Loading

【题解】 P6354 [COCI2007-2008#3] TAJNA

定位:字符串水题

分析题意&&步骤剖析:

  • 输入一个字符串s并将字符串各元素以从左到右的逐行填充进一个二维字符矩阵,且矩阵的长与宽( \(\le \sqrt{n}\) )需要尽量接近。
  • 将矩阵元素从上往下逐列输出。

代码实现:

24ms,636KB,C++

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

string str;
int r,s,total=0;
char key[105][105];

int main()
{
	memset(key,0,sizeof(key));
	cin>>str;
	int len=str.size();
	for(int i=sqrt(len);i>0;i--)//计算矩阵大小
		if(len%i==0)
		{
			r=i,s=len/i;
			break;
		}
	for(int i=0;i<s;i++)//对矩阵进行赋值
		for(int j=0;j<r;j++)
			key[j][i]=str[total++];//注意这里是 key[j][i]
	for(int i=0;i<r;i++)
		for(int j=0;j<s;j++)
			putchar(key[i][j]);
	return 0;
}
posted @ 2020-10-18 11:45    阅读(123)  评论(0编辑  收藏  举报