zoukankan      html  css  js  c++  java
  • Dynamic Morphing Square(动态变形矩阵)

    题目描述:

    解题思路:

    先对输入的N进行判断,是否不小于3,如果小于3,需要继续输入一个新的数,知道输入的N比3大。

    第一个打印的矩阵,*号为最外面一圈,其余全为-。

    第二个打印的矩阵,*号向内缩减了一圈。

    依次递减,直到*号缩到最内部,然后又开始往外扩张。

    所以我们设置max和min变量记录每次需要打印*的位置,和第几次打印也是有关的。所以设置变量run记录打印的次数。

    n阶矩阵当打印了n次后,继续循环,所以将run重置为0;

    n的阶数如果是奇数,需要多循环一次。

    代码如下:

     1 #include "stdio.h" 
     2 #include "windows.h"
     3 
     4 int pattern(int n){
     5     int i, j, run;
     6     int max, min;
     7     run = 0;
     8     max = n - 1;
     9     min = 0;
    10 
    11     while(1){
    12         for (i = 0; i < n; i++){
    13 
    14             for (j = 0; j < n; j++)
    15             {
    16                 if ((min <= max && min <= i && i <= max && min <= j && j <= max) && (i == min || i == max || j == min || j == max))
    17                     printf("*");//每次打印,只有一圈*号,既a[i][i]和a[n-i][n-i]之间
    18                 else
    19                     printf("-");
    20             }
    21             printf("
    ");
    22         }
    23         printf("
    ");
    24         if (run < n / 2){
    25             max--;
    26             min++;
    27         }
    28         if (run >= n / 2){
    29             max++;
    30             min--;
    31         }
    32         Sleep(500);//延迟0.5s打印下一个矩阵
    33         run++;
    34         if (run > n-1 && n%2==0)
    35             run = 0;
    36         if (n % 2 != 0 && run>=n-1)//判断输入n的奇偶,是基数提前将run重置成0
    37             run = 0;
    38     }
    39 
    40 }
    41 void main(){
    42     int n;
    43     printf("Input pattern size N :");
    44         
    45     while(scanf_s("%d",&n)){
    46         
    47         if (n < 3){
    48             printf("warning: pattern size should be at least 3!
    ");
    49             printf("Input pattern size N :");
    50         }
    51         else
    52             break;
    53     }
    54 
    55     pattern(n);
    56     
    57     scanf_s("%d", &n);
    58 }

     运行结果:

    源码下载地址:

    http://pan.baidu.com/s/1bnDhl1t 

  • 相关阅读:
    Monitor All SQL Queries in MySQL (alias mysql profiler)
    to config RBS/RBLOB in sharepoint
    Chapter 10 EF 6 Support
    分布式网站架构后续:zookeeper技术浅析
    js中的json对象详细介绍
    JS通用方法总结(一)
    combobox远程加载数据的总结和Json数据的小结
    iframe自适应方法
    简单理解Hibernate三种状态的概念及互相转化
    hibernate的save()和persit()之间的区别
  • 原文地址:https://www.cnblogs.com/SeekHit/p/4949642.html
Copyright © 2011-2022 走看看