zoukankan      html  css  js  c++  java
  • 螺旋矩阵——正逆序

    输入数字N,输出大小为N*N的螺旋矩阵

    #include<iostream>
    using namespace std;
    void Spiral_Matrix1(int N,int **r){//正序输出
    	int k=N;int sum=1;
    	while(k>0){
    		int m=(N-k)/2;
    		int i=m,j=m;
    		if(k==1){		//奇数情况下
    			r[m][m]=sum;
    			break;
    		}
    		for(int n=sum;n<sum+4*(k-1);n++){
    			if((i==m)&&(j>=m&&j<m+k-1)){
    				r[i][j]=n;
    				j++;
    			}
    			else if((i>=m&&i<m+k-1)&&(j==m+k-1)){
    				r[i][j]=n;
    				i++;
    			}
    			else if((i==m+k-1)&&(j>m&&j<=m+k-1)){
    				r[i][j]=n;
    				j--;
    			}
    			else if((i>m&&i<=m+k-1)&&(j==m)){
    				r[i][j]=n;
    				i--;
    			}
    		}
    		sum+=4*(k-1);
    		k-=2;
    	}
    
    	for(int i=0;i<N;i++){
    		for(int j=0;j<N;j++){
    			cout<<r[i][j]<<' ';
    		}
    		cout<<endl;
    	}
    }
    void Spiral_Matrix2(int N,int **r){//逆序输出
    	int k=N;int res=N*N;
    	while(k>0){
    		int m=(N-k)/2;
    		int i=m,j=m;
    		if(k==1){		//奇数情况下
    			r[m][m]=1;
    			break;
    		}
    		for(int n=res;n>res-4*(k-1);n--){
    			if((i==m)&&(j>=m&&j<m+k-1)){
    				r[i][j]=n;
    				j++;
    			}
    			else if((i>=m&&i<m+k-1)&&(j==m+k-1)){
    				r[i][j]=n;
    				i++;
    			}
    			else if((i==m+k-1)&&(j>m&&j<=m+k-1)){
    				r[i][j]=n;
    				j--;
    			}
    			else if((i>m&&i<=m+k-1)&&(j==m)){
    				r[i][j]=n;
    				i--;
    			}
    		}
    		res-=4*(k-1);
    		k-=2;
    	}
    
    	for(int i=0;i<N;i++){
    		for(int j=0;j<N;j++){
    			cout<<r[i][j]<<' ';
    		}
    		cout<<endl;
    	}
    }
    void main(){
    	int N;
    	cin>>N;
    	int **p;
    	p=new int*[N];
    	for(int i=0;i<N;i++){
    		p[i]=new int [N];
    	}
    	Spiral_Matrix1(N,p);
    	cout<<endl;
    	Spiral_Matrix2(N,p);
    	for(int i=0;i<N;i++){
    		delete [] p[i];
    	}
    	delete [] p;
    	system("pause");
    }


  • 相关阅读:
    存储器的分配与回收算法实现
    jsoup抓取借书记录
    java学习碰到死胡同了
    PHP MYSQL登陆和模糊查询
    JAVA进阶之路(一)
    String是最基本的数据类型吗?
    面向对象的特征有哪些方面
    sqoop
    你真的理解 new 了吗?
    面试题目 字符串的去重与压缩(统计)
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/6905841.html
Copyright © 2011-2022 走看看