Chinaunix首页 | 论坛 | 博客
  • 博客访问: 230930
  • 博文数量: 75
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 848
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-08 10:27
文章分类
文章存档

2014年(9)

2013年(66)

我的朋友

分类: C/C++

2013-12-06 16:52:16

just play, and further for hanoi


  1. #include "stdio.h"  
  2.   
  3. void PrintFloor(int floor)  
  4. {  
  5.     int i,j;  
  6.     for(i = 0; i < floor; i++)  
  7.     {  
  8.         for(j = 0; j < floor-1-i; j++)  
  9.         {  
  10.             printf(" ");  
  11.         }  
  12.         for(j = 0; j < i*2+1; j++)  
  13.         {  
  14.             printf("*");  
  15.         }  
  16.         printf("\n");  
  17.     }  
  18. }  
  19.   
  20. void PrintFloorBetter(int floor)  
  21. {  
  22.     int i,j;  
  23.     for(i = 0; i < floor; i++)  
  24.     {  
  25.         for(j = 0; j < floor-1-i; j++)  
  26.         {  
  27.             printf(" ");  
  28.         }  
  29.         for(j = 0; j < i+1; j++)  
  30.         {  
  31.             printf("* ");  
  32.         }  
  33.         printf("\n");  
  34.     }  
  35. }  
  36.   
  37. void PrintDoubleFloorBetter(int floor, int interval)  
  38. {  
  39.     int i,j;  
  40.     interval += sizeof("* ")*floor;  
  41.     for(i = 0; i < floor; i++)  
  42.     {  
  43.         for(j = 0; j < floor-1-i; j++)  
  44.         {  
  45.             printf(" ");  
  46.         }  
  47.         for(j = 0; j < i+1; j++)  
  48.         {  
  49.             printf("* ");  
  50.         }  
  51.         for(j = 0; j < interval - i*2; j++)  
  52.         {  
  53.             printf(" ");  
  54.         }  
  55.         for(j = 0; j < i+1; j++)  
  56.         {  
  57.             printf("* ");  
  58.         }  
  59.   
  60.         printf("\n");  
  61.     }  
  62. }  
  63.   
  64. void PrintTripleFloorBetter(int floor, int interval)  
  65. {  
  66.     int i,j;  
  67.     interval += sizeof("* ")*floor;  
  68.     for(i = 0; i < floor; i++)  
  69.     {  
  70.         for(j = 0; j < floor-1-i; j++)  
  71.         {  
  72.             printf(" ");  
  73.         }  
  74.         for(j = 0; j < i+1; j++)  
  75.         {  
  76.             printf("* ");  
  77.         }  
  78.         for(j = 0; j < interval - i*2; j++)  
  79.         {  
  80.             printf(" ");  
  81.         }  
  82.         for(j = 0; j < i+1; j++)  
  83.         {  
  84.             printf("* ");  
  85.         }  
  86.         for(j = 0; j < interval - i*2; j++)  
  87.         {  
  88.             printf(" ");  
  89.         }  
  90.         for(j = 0; j < i+1; j++)  
  91.         {  
  92.             printf("* ");  
  93.         }  
  94.   
  95.         printf("\n");  
  96.     }  
  97. }  
  98.   
  99. int GetTripleMax(int *a)  
  100. {  
  101.     int i;  
  102.     int iRet = *a;  
  103.     for(i=1; i < 3; i++)  
  104.     {  
  105.         if(*(a+i) > iRet)  
  106.             iRet = *(a+i);  
  107.     }  
  108.     return iRet;  
  109. }  
  110. void PrintTripleFloorControl(int *floor, int interval)  
  111. {  
  112.     int i,j;  
  113.     int space[2];  
  114.     int top = GetTripleMax(floor+1);  
  115.   
  116.     interval += sizeof("* ")*floor[1];  
  117.     printf("top:%d\n",top);  
  118.     for(i = 0; i < *floor; i++)  
  119.     {  
  120.         if(i < *floor - top)  
  121.         {  
  122.             printf("\n");     
  123.             continue;  
  124.         }  
  125.         for(j = 0; j < floor[1]-1-i+(*floor-top); j++)  
  126.         {  
  127.             printf(" ");  
  128.         }  
  129.         for(j = 0; j < i+1-(*floor-top); j++)  
  130.         {  
  131.             printf("* ");  
  132.         }  
  133.         for(j = 0; j < interval - i*2; j++)  
  134.         {  
  135.             printf(" ");  
  136.         }  
  137.         for(j = 0; j < i+1-(*floor-top); j++)  
  138.         {  
  139.             printf("* ");  
  140.         }  
  141.         for(j = 0; j < interval - i*2; j++)  
  142.         {  
  143.             printf(" ");  
  144.         }  
  145.         for(j = 0; j < i+1-(*floor-top); j++)  
  146.         {  
  147.             printf("* ");  
  148.         }  
  149.   
  150.         printf("\n");  
  151.     }  
  152. }  
  153.   
  154. void PrintFloorTripleControl(int *floor, int interval)  
  155. {  
  156.     int i,j;  
  157.     int space[2];  
  158.     int tmpInterval;  
  159.     int top = GetTripleMax(floor+1);  
  160.   
  161.     printf("top:%d\n",top);  
  162.     for(i = 0; i < *floor; i++)  
  163.     {  
  164.         if(i < *floor - top)  
  165.         {  
  166.             printf("\n");     
  167.             continue;  
  168.         }  
  169.         for(j = 0; j < floor[1]-1-i+(floor[0]-floor[1]); j++)  
  170.         {  
  171.             printf(" ");  
  172.         }  
  173.         for(j = 0; j < i+1-(floor[0]-floor[1]); j++)  
  174.         {  
  175.             printf("* ");  
  176.         }  
  177.         tmpInterval = floor[1] - (i+1-(floor[0]-floor[1]));  
  178.         tmpInterval += floor[2] - (i+1-(floor[0]-floor[2]));  
  179.         tmpInterval += interval;  
  180.         for(j = 0; j < tmpInterval; j++)  
  181.         {  
  182.             printf(" ");  
  183.         }  
  184.         for(j = 0; j < i+1-(floor[0]-floor[2]); j++)  
  185.         {  
  186.             printf("* ");  
  187.         }  
  188.         tmpInterval = floor[2] - (i+1-(floor[0]-floor[2]));  
  189.         tmpInterval += floor[3] - (i+1-(floor[0]-floor[3]));  
  190.         tmpInterval += interval;  
  191.         for(j = 0; j < tmpInterval; j++)  
  192.         {  
  193.             printf(" ");  
  194.         }  
  195.         for(j = 0; j < i+1-(floor[0]-floor[3]); j++)  
  196.         {  
  197.             printf("* ");  
  198.         }  
  199.   
  200.         printf("\n");  
  201.     }  
  202. }  
  203.   
  204. void PrintFloorTripleControlBetter(int *floor, int interval)  
  205. {  
  206.     int i,j;  
  207.     int space[2];  
  208.     int tmpInterval;  
  209.     int top = GetTripleMax(floor+1);  
  210.   
  211.     printf("top:%d\n",top);  
  212.     for(i = 0; i < *floor; i++)  
  213.     {  
  214.         if(i < *floor - top)  
  215.         {  
  216.             printf("\n");     
  217.             continue;  
  218.         }  
  219.         for(j = 0; j < floor[1]-1-i+(floor[0]-floor[1]); j++)  
  220.         {  
  221.             printf(" ");  
  222.         }  
  223.         for(j = 0; j < i+1-(floor[0]-floor[1]); j++)  
  224.         {  
  225.             printf("* ");  
  226.         }  
  227.         tmpInterval = floor[0] - (i+1-(floor[0]-floor[1]));  
  228.         tmpInterval += floor[0] - (i+1-(floor[0]-floor[2]));  
  229.         tmpInterval += interval;  
  230.         for(j = 0; j < tmpInterval; j++)  
  231.         {  
  232.             printf(" ");  
  233.         }  
  234.         for(j = 0; j < i+1-(floor[0]-floor[2]); j++)  
  235.         {  
  236.             printf("* ");  
  237.         }  
  238.         tmpInterval = floor[0] - (i+1-(floor[0]-floor[2]));  
  239.         tmpInterval += floor[0] - (i+1-(floor[0]-floor[3]));  
  240.         tmpInterval += interval;  
  241.         for(j = 0; j < tmpInterval; j++)  
  242.         {  
  243.             printf(" ");  
  244.         }  
  245.         for(j = 0; j < i+1-(floor[0]-floor[3]); j++)  
  246.         {  
  247.             printf("* ");  
  248.         }  
  249.   
  250.         printf("\n");  
  251.     }  
  252. }  
  253. int main(void)  
  254. {  
  255.     int i,j;  
  256.     int floor;  
  257.     int control[4];  
  258.       
  259.     printf("input floors:\n");  
  260.     scanf("%d",&floor);  
  261.     printf("floors %d\n\n",floor);  
  262.   
  263.     PrintFloor(floor);  
  264.     printf("\n");  
  265.     PrintFloorBetter(floor);  
  266.     printf("\n");  
  267.     PrintDoubleFloorBetter(floor, 5);  
  268.     printf("\n");  
  269.     PrintTripleFloorBetter(floor, 5);   
  270.     printf("\n");  
  271.     control[0] = floor;  
  272.     control[1] = floor-1;  
  273.     control[2] = floor-1;  
  274.     control[3] = floor-1;  
  275.     PrintTripleFloorControl(control,5);  
  276.     printf("\n");  
  277. #if 1  
  278.     control[1] = floor-1;  
  279.     control[2] = floor-4;  
  280.     control[3] = floor-3;  
  281. #endif  
  282. #if 0  
  283.     control[1] = floor-1;  
  284.     control[2] = floor-1;  
  285.     control[3] = floor-1;  
  286. #endif  
  287.     PrintFloorTripleControlBetter(control,5);  
  288.     return 0;  
  289. }  
阅读(1139) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~