window.cnblogsConfig = {//可以放多张照片,应该是在每一个博文上面的图片,如果是多张的话,那么就随机换的。 homeTopImg: [ "https://i.loli.net/2019/08/02/5d440029af8e994539.png" ], }

CF58D Calendar 题解

CF58D Calendar 题解

看题目点这里

具体思路:

我们知道输出的每一行由两个串加一个分隔符组成,所以我们不妨假设这一个分隔符原本就处于字符串内(方便排序),然后组成了新字符串之后在去掉末尾的字符。

做题步骤:

  1. 输入;

  2. 将分隔符加入每一个字符串内;

  3. 按字典序排序(tips:sort(str+1,str+n+1) 即可);

  4. 求答案;

  5. 输出。

核心代码:

for (int x = 1; x <= n; x++)
	s[x] += ch, m += s[x].size();
m /= n / 2;	//m为一个输出串的长度(末尾有分隔符)
for (int x = 1; x <= n; x++)
	for (int y = x + 1; y <= n; y++)
		if (s[x].size() + s[y].size() == m)
		{
			s[y][s[y].size() - 1] = ' ';//去分隔符(由于文本比对忽略行末空格,所以可以将最后一位改为空格)
			ans[cnt++] = s[x] + s[y];
			s[x] = "", s[y] = "";
			break;
		}

温馨提示:

需要将变量定义为 string 类型。

posted @ 2024-01-21 21:52  mgcjade  阅读(22)  评论(0)    收藏  举报