1 条题解
-
0
自动搬运
来自洛谷,原作者为

lzqy_
生而绚烂,璀璨如花。搬运于
2025-08-24 22:11:14,当前版本为作者最后更新于2021-03-24 14:07:30,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
提供一个简单的方法,大括号换行代码 行
这道题没有什么难度,就是纯模拟,结合代码来分析就好了
变量名
先来解释一下接下来代码的变量名:
int N;//总行数 int hlen,llen; //hlen:每一行的长度(总列数) llen:每一列的长度(总行数) int Max,cnt,n;//临时变量 string ans[1001][1001]; //ans[i][j]:最后输出的表格中,(i,j)位置上的字符串(如果没有就为空) string s;//临时变量大致思路
把最后输出的东西看做一个 的矩阵,用数组存下,并把逗号看做平常输出矩阵的空格,这样一来,逗号、行数等很多的细节就没有了。
代码
在代码里有非常详细的注释~
#include<bits/stdc++.h> using namespace std; int N,n,hlen,llen,Max,cnt; string ans[1001][1001],s; //上文已经介绍 int main() { cin>>N; for(int i=1;i<=N;i++) { cin>>n>>ans[1][++hlen]; //新的文件要往右边排 //因此这个文件的文件名位于(1,hlen+1)位置(顺便更新hlen) llen=max(llen,n+1),Max=0; //这一个文件一定有n+1行(算上文件名那一行),刷新llen for(int j=1;j<=n;j++) { cin>>s,cnt=0; //依次读入第j+1行第cnt个子文件 for(int u=0;u<s.length();u++,cnt++) while(s[u]!=','&&u<s.length()) ans[j+1][hlen+cnt]+=s[u++]; Max=max(Max,cnt-1); //这里的Max代表目前文件每一行子文件个数的最大值 //也就是说,目前的文件会使列数多出几列 } hlen+=Max;//累加列数 } //最后输出整个llem×hlen的矩阵就好了 for(int i=1;i<=llen;i++) for(int j=1;j<hlen;j++) if(j!=hlen) cout<<ans[i][j]<<','; else cout<<ans[i][hlen]<<endl; return 0; }祝大家 愉快!
- 1
信息
- ID
- 4480
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 3
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者