zoj 1201(数)
出现的问题:1,getchar()与scanf()顺序搞反,结果花了半个多小时
2,后一部分的程序,要反过来写,逆向思维不好,搞了很长时间,最后才调试出来。
感想:这题对程序语言的表达,使用效果不错,让我想起约瑟夫环。不过也就我这样菜鸟会这样觉得,网上都说这是水题,结果自己。。。。。还是继续加油吧!
#include<stdio.h>
#include<string.h>
int main()
{
int n;
int a[51],endi[51],endp[51],i,j,count,k;
char c;
while(scanf("%d",&n)!=EOF&&n)
{
memset(endi,0,sizeof(endi));
memset(endp,0,sizeof(endp));
getchar();
scanf("%c",&c);
for(i=1;i<=n;i++)
scanf("%d",a+i);
if(c=='P')
{
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(a[j]==i)
{
break;
}
if(a[j]>i)
{
endi[i]++;
}
}
}
for(i=1;i<n;i++)
{
printf("%d ",endi[i]);
}
printf("%d\n",endi[n]);
}
if(c=='I'){
for(i=1;i<=n;i++)
{
count=0;k=0;
while(a[i]>=count)
{
k++;
if(k>n)
k%=n;
if(endp[k]==0)
count++;
}
endp[k]=i;
}
for(i=1;i<n;i++)
{
printf("%d ",endp[i]);
}
printf("%d\n",endp[n]);
}
}
return 0;
}