zoukankan      html  css  js  c++  java
  • 《考研机试》(五)机试题精讲

    螺旋数组题目:

     解析:每个人的想法肯定差不多都是顺时针画

    1.先画1  2  3  4 (n个数)

    2.再画5  6  7 (n-1个数)

    3.再画8  9  10 (n-1个数)

    4.再画11  12  (n-2个数) 

    思考一下:一共有几圈 == 应该画几次,2圈对吧,拓展一下就是(n/2+1)(不论奇偶,其实n是偶数,第三圈相当于画了个空“”)

    接下来一起来写代码:

    #include<iostream>
    using namespace  std;
    
    /*
     * 1    2   3   4   5
     * 16               6
     * 15               7
     * 14               8
     * 13   12  11  10  9
    */
    
    int main() {
    	int n = 5;//画一个5X5的螺旋矩阵
    	int count = 1;//从1开始画
    	int num[n][n];
    	
    	//问题1:要画到哪行结束呢,是不是得要有3圈,即n/2+1 
    	/*
    	 第一圈: 
    	 * 1    2   3   4   5
    	 * 16               6
    	 * 15               7
    	 * 14               8
    	 * 13   12  11  10  9
    	 
    	 第二圈: 
    	    17  18  19
    		24  25  20
    		23  22  21
    		
    	第三圈:
    			25 			
    	*/
    	 
     	for(int i=0; i<n/2+1; i++){//画多少圈,n/2+1 
     	
     		for(int j=i; j<=n-i-1; j++){
     			//画一横:1    2   3   4   5 
     			num[i][j] = count++;
    		 }
    		
    		for(int j=i+1; j<=n-i-1; j++){
    			//画一竖:6    7    8    9 
    			num[j][n-i-1] = count++;
    		} 
    		
    		for(int j=n-i-2; j>=i; j--){
    			//画下面一个反横:13   12   11    10 
    			num[n-i-1][j] = count++; 
    		} 
    		
    		for(int j=n-i-2; j>=i+1; j--){
    			//画左边一个反竖:14   15   16 
    			num[j][i] = count++;
    		} 
    	 }
    	 
        //打印
        for(int i=0; i<n; i++){
    	 	for(int j=0; j<n; j++){
    	 		printf("%5d", num[i][j]);
    	    }
    	    printf("
    ");
        } 
        
    	return 0;
    }
    

     

  • 相关阅读:
    J2ME开发及JBuilder工具的应用
    Oracle 的入门心得
    Java多线程程序设计初步
    网线制作
    手机死机的原因简析
    SIM简介
    谈谈J2ME的几个重要的功能
    手机应该放哪里 如何把危害的程度降到最低
    彩信的基本原理
    oracle学习笔记
  • 原文地址:https://www.cnblogs.com/Whgy/p/12312248.html
Copyright © 2011-2022 走看看