编程题:有蛇形矩阵,比如宽为3的时候为 1 2 3
8 9 4
7 6 5,
宽为4的时候为:1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
要求按行打印矩阵,譬如宽为3的时候打印1 2 3 8 9 4 7 6 5.。
关键是先对矩阵按顺时针方向赋值,除了运用递归似乎没什么好的思路,先给最外圈赋值,递归调用函数给内层圈赋值,每完成一圈圈的宽度减2.
#include <iostream>
using namespace std;
void MatrixInCircle(int** numbers, int width, int start)
{
    static int num = 1;
    if(width > 0)
    {
    	if(width == 1)
    		numbers[start][start] = num;
    	else
    	{
    		int End = start + width - 1;
    		for(int i = start; i <= End; ++i)
        		numbers[start][i] = num++;
    
        	for(int i = start + 1; i <= End; ++i)
            	numbers[i][End] =num++;
            	
        	for(int i = End - 1; i >= start; --i)
            	numbers[End][i] = num++;
	  
        	for(int i = End - 1 ; i > start; --i)
            	numbers[i][start] = num++;
    	}
    }
}
void MatrixClockwisely(int width)
{
	int** numbers = new int*[width];
    for(int i = 0; i < width; ++i)
        numbers[i] = new int[width];
        
    int start = 0;
    int W = width;
    while(W > 0)
    {
        MatrixInCircle(numbers, W, start);
        W -= 2;
        ++start;
    }
    for(int i = 0; i < width; ++i)
    {
    	for(int j = 0; j < width; ++j)
    		cout << numbers[i][j] << " ";
    }
    
    //释放内存
    for(int i = 0; i < width; ++i)
        delete[] numbers[i];
        
    delete[] numbers;
}
int main() {
	// your code goes here
	MatrixClockwisely(4);
	return 0;
} 
                   
                   
                   
                   
                             本文介绍了一种使用C++实现的蛇形矩阵按顺时针方向填充并打印的方法。通过递归的方式处理每一层矩阵,实现了对于任意宽度的矩阵进行正确填充与打印的功能。
本文介绍了一种使用C++实现的蛇形矩阵按顺时针方向填充并打印的方法。通过递归的方式处理每一层矩阵,实现了对于任意宽度的矩阵进行正确填充与打印的功能。
           
       
           
                 
                 
                 
                 
                 
                
               
                 
                 
                 
                 
                
               
                 
                 扫一扫
扫一扫
                     
              
             
                   639
					639
					
 被折叠的  条评论
		 为什么被折叠?
被折叠的  条评论
		 为什么被折叠?
		 
		  到【灌水乐园】发言
到【灌水乐园】发言                                
		 
		 
    
   
    
   
             
            


 
            