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");
    }


  • 相关阅读:
    webpack性能优化-PWA(离线访问技术)
    node增删改查
    webpack性能优化
    webpack常见配置
    第一个node接口
    $refs的解释
    vue路由传参的三种基本方式
    结构体的定义
    gcc 的编译流程 和gdb的调试方法
    makefile高级用法
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/6905841.html
Copyright © 2011-2022 走看看