Section 4.4 shuttle

来源:互联网 发布:凯旋门信誉第一js 编辑:程序博客网 时间:2024/05/16 14:29

/*
ID: niepeng1
PROG: shuttle
LANG: C++
*/
/*
 这个题目,看着简单,就是没有办法做。本来想广度搜索,可是太长了。
 忍不住看了题解,原来是这样的呀。其实还是没有懂。
 直到看了源程序才明白要这样编写。不过还是知道这样写,自己下次
 绝对写着有问题,或者根本写不出来。这找规律也太复杂了。
*/
#include<stdio.h>
#include<memory.h>
#include<algorithm>
int n;

int main()
{
 freopen("shuttle.in","r",stdin);
 freopen("shuttle.out","w",stdout);
 int i,j,k,blank,t;
 scanf("%d",&n);
 t=0;blank=n+1;k=-1;
 for(i=0;i<n;i++){
  for(j=0;j<i;j++){
   //大致就是我有点晕,为什么呢?这就是规律
   if(t%20==0)  printf("%d",blank+2*k);
   else printf(" %d",blank+2*k);
   blank+=2*k;
   t++;
   if(t%20==0)  printf("/n");
  }
  if(t%20==0) printf("%d",blank+k);
  else printf(" %d",blank+k);
  blank+=k;
  t++;
  if(t%20==0)  printf("/n");
  k=-k;
 }
 for(i=0;i<n;i++){
  if(t%20==0) printf("%d",blank+2*k);
  else printf(" %d",blank+2*k);
  blank+=2*k;
  t++;
  if(t%20==0) printf("/n");
 }
 k=-k;
 for(i=n-1;i>=0;i--){
  if(t%20==0) printf("%d",blank+k);
  else printf(" %d",blank+k);
  blank+=k;
  t++;
  if(t%20==0) printf("/n");
  for(j=0;j<i;j++){
   if(t%20==0) printf("%d",blank+2*k);
   else printf(" %d",blank+2*k);
   blank+=2*k;
   t++;
   if(t%20==0) printf("/n");
  }
   k=-k;
 }
 if(t%20) printf("/n");
 return 0;
}

原创粉丝点击