zoukankan      html  css  js  c++  java
  • 补一下蛇形矩阵

    走到尽头版

    #include<bits/stdc++.h>
    using namespace std;
    
    int rec[60][60];
    int flag[60][60];
    int main()
    {
    	
    	  int n,m;
    	  cin>>n>>m;
    	  int dx[4]={0,-1,0,1};
    	  int dy[4]={-1,0,1,0};
    	  for(int x=n-1,d=0,y=m-1,cnt=1;cnt<=n*m;)
    	  {
    	  	rec[x][y]=cnt++;
    	  	flag[x][y]=1;
    	  	int a=x+dx[d],b=y+dy[d];
    	  	  
    	  	if(a<0||a>=n||b<0||b>=m||flag[a][b])
    	  	{
    	  		
    	  		d=(d+1)%4;//循环走到尽头
    			  a=x+dx[d],b=y+dy[d];//重新找方向 下一个方向 
    		}
    		  
    		  x=a;y=b;
    		
    	  	
    	  }
    	  
    	  for(int i=0;i<n;i++)
    	  {
    	  	for(int j=0;j<m;j++)
    	  	{
    	  		cout<<rec[i][j]<<" ";
    		}
    		cout<<endl;
    	  } 
     } 
    

    非走到尽头

    #include<bits/stdc++.h>
    using namespace std;
    
    int rec[60][60];
    int flag[60][60];
    int main()
    {
    	
    	  int n,m;
    	  cin>>n>>m;
    	  int dx[4]={0,-1,0,1};
    	  int dy[4]={-1,0,1,0};
    	  rec[n-1][m-1]=1;flag[n-1][m-1]=1;
    	  for(int x=n-1,y=m-1,cnt=2;cnt<=n*m;cnt++)
    	  {
    	  	
    	  	for(int d=0;d<4;d++) 
    	  	{	int a=x+dx[d],b=y+dy[d];
    	  	   
    	  		if(a>=0&&a<n&&b>=0&&b<m&&!flag[a][b])
    	  		{	rec[a][b]=cnt;  
    	  			flag[a][b]=1;
    	  			x=a,y=b;
    	  			break;
    	  			
    			  }
    		  }
    	  
    	  }
    	  
    	  for(int i=0;i<n;i++)
    	  {
    	  	for(int j=0;j<m;j++)
    	  	{
    	  		cout<<rec[i][j]<<" ";
    		}
    		cout<<endl;
    	  } 
     } 
    

  • 相关阅读:
    同样的代码bug
    Vim中的Tab
    在Vue中同时使用过渡和动画
    在Vue中使用animate.css
    Vue中的css动画
    动态组件与v-once指令
    在Vue中使用插槽
    非父子组件间的传值
    给组件绑定原生事件
    组件参数校验和非props特性
  • 原文地址:https://www.cnblogs.com/shenxiaodou/p/12468498.html
Copyright © 2011-2022 走看看