ZOJ Problem Set - 1201
Inversion
#include<stdio.h>
#include<string.h>
int main(void)
{
int n, i, j;
char ch;
int serial[55],begin[55];
while (scanf("%d", &n) == 1 && n)
{
getchar();
scanf("%c", &ch);
for (i = 1; i <= n; ++i)
scanf("%d", &serial[i]);
switch (ch)
{
case 'P':
for (i = 1; i <= n; ++i)
{
int count = 0;
for (j = 1;; ++j)
{
if (serial[j] > i) count++;
if (serial[j] == i) break;
}
printf("%d", count);
if (i != n) printf(" ");
else printf("\n");
}
break;
case 'I':
memset(begin, 0, sizeof(begin));
for (i = 1; i <= n; ++i)
{
int count = 0;
for (j = 1; j <= n; ++j)
{
if (begin[j] == 0) count++;
if (count == serial[i]+1)
{begin[j] = i; break;}
}
}
for (i = 1; i <= n; ++i)
{
printf("%d", begin[i]);
if (i != n) printf(" ");
else printf("\n");
}
break;
default: break;
}
}
return 0;
}
本文详细解析了ZOJ在线评测系统中的问题集1201,涉及序列操作与计数问题,通过实例展示了如何解决这类问题,包括使用P和I指令进行序列操作和计数,提供了具体的编程实现方法。

420

被折叠的 条评论
为什么被折叠?



