1. 程式人生 > >HDOJ 2153-仙人球的殘影

HDOJ 2153-仙人球的殘影

仙人球的殘影

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 6758    Accepted Submission(s): 3131

Problem Description 在美麗的HDU,有一名大三的同學,他的速度是眾所周知的,跑100米僅僅用了2秒47,在他跑步過程中會留下殘影的哎,大家很想知道他是誰了吧,他叫仙人球,既然名字這樣了,於是他的思想是單一的,他總是喜歡從一點出發,經過3次轉折(每次向右轉90°),回到出發點,而且呢,他每次轉折前總是跑相同長度的路程,所以很多人都想知道如果用‘1’算他跑步出發的第一個殘影的話,那麼回到起點的時候,他的殘影是怎麼樣的呢?
Input 測試資料有多行,每一行為一個數N(1<=N<=10)(以0結尾,0不做處理),即仙人球在沒有回到起點的時候,跑過留下N個殘影后突然90°右轉。
Output 每組測試資料輸出一個結果,並且每個殘影的計數位長度為3個字元長度。(當然N等於1的話,它的結果也是佔用3個字元位置的)
Sample Input 4
Sample Output 1 2 3 4 12 5 11 6 10 9 8 7
Author Guner  
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{
	int n;
	while(scanf("%d",&n)!=EOF&&n)
	{
		if(n==1)
		{
			printf("%3d\n",n);
			continue;
		}
		int s;
		int i;
		int end=n+n+(n-2)*2;
		for(i=1;i<=n;i++)
		{
			printf("%3d",i);
		}
		printf("\n");
		s=i;
		for(int j=1;j<=n-2;j++)
		{
			printf("%3d",end);
			for(int k=0;k<n-2;k++)
			{
				printf("   ");
			}
			printf("%3d",s);
			end--;
			s++;
			printf("\n");
		}
		for(int o=end;o>=s;o--)
		{
			printf("%3d",o);
		}
		printf("\n");
	}
	return 0;
}