【题解】 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;
}