3577466_ac_0ms_208k.cpp

来自「北大大牛代码 1240道题的原代码 超级权威」· C++ 代码 · 共 69 行

CPP
69
字号
#include<stdio.h>

char str[2008], out[2008];

int main() 
{
	int i, j, N, ii, jj, cnt;
	char t[1];

	scanf("%d", &N);
	for(i = 0; i < N; i++) 
	{
		scanf("%s", t);
		str[i] = t[0];
	}
	i = 0;
	j = N - 1;
	cnt = 0;
	while (i <= j) 
	{
		if (str[i] < str[j])
		{
			out[cnt++] = str[i];
			i++;
		}
		else 
		{
			if(str[i] > str[j])
			{
				out[cnt++] = str[j];
				j--;
			}
			else 
			{
				ii = i + 1;
				jj = j - 1;
				while(jj - ii > 1 && str[ii] == str[jj]) 
				{
					ii++;
					jj--;
				}
				if (str[ii] < str[jj])
				{
					out[cnt++] = str[i];
					i++;
				}
				else
				{
					out[cnt++] = str[j];
					j--;
				}
			}
		}
	}
	for (i = 1; i <= N; i++)
	{
		putchar(out[i - 1]);
		if (i % 80 == 0)
		{
			putchar('\n');
		}
	}
	if (N % 80 == 0)
	{
		putchar('\n');
	}
	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?