zoukankan      html  css  js  c++  java
  • 武汉科技大学ACM:1008: 零起点学算法64——回型矩阵

    Problem Description

    输出n*m的回型矩阵

    Input

    多组测试数据
    每组输入2个整数 n和m(不大于20)  

    Output

    输出n*m的回型矩阵,要求左上角元素是1,(每个元素占2个位置,靠右) 

    Sample Input

    4 3

    Sample Output

     1  2  3
    10 11  4
     9 12  5
     8  7  6
    

      1 #include<iostream>
      2 #include<string.h>
      3 #include<iomanip>
      4 using namespace std;
      5 int main()
      6 {
      7     int m,n,i,j,k,lastX,lastY;
      8     while(cin>>m>>n)
      9     {        
     10         int **a=new int*[m];
     11         for(i=0;i<m;i++)
     12         {
     13             *(a+i)=new int[n];
     14             memset(a[i],0,n*sizeof(int));
     15         }
     16         i=0,j=0,k=0;
     17         int state=0;//0 为从左到右赋值,1为从上到下,2为从右到左,3为从下到上
     18         while(k<m*n)
     19         {//要赋值m*n次
     20             switch(state)
     21             {
     22             case 0:
     23                 for(;j<n;++j)
     24                 {
     25                     if(a[i][j]==0)
     26                     {
     27                         a[i][j]=k+1;
     28                         ++k;
     29                         lastX=i;
     30                         lastY=j;//记录下一次赋值开始位置
     31                     }
     32                 }
     33                 i=lastX+1;
     34                 j=lastY;
     35                 state=1;
     36                 break;
     37             case 1:
     38                 for(;i<m;++i)
     39                 {
     40                     if(a[i][j]==0)
     41                     {
     42                         a[i][j]=k+1;
     43                         ++k;
     44                         lastX=i;
     45                         lastY=j;
     46                     }
     47                 }
     48                 i=lastX;
     49                 j=lastY-1;
     50                 state=2;
     51                 break;
     52             case 2:
     53                 for(;j>=0;--j)
     54                 {
     55                     if(a[i][j]==0)
     56                     {
     57                         a[i][j]=k+1;
     58                         ++k;
     59                         lastX=i;
     60                         lastY=j;
     61                     }
     62                 }
     63                 i=lastX-1;
     64                 j=lastY;
     65                 state=3;
     66                 break;
     67             case 3:
     68                 for(;i>=0;--i)
     69                 {
     70                     if(a[i][j]==0)
     71                     {
     72                         a[i][j]=k+1;
     73                         ++k;
     74                         lastX=i;
     75                         lastY=j;
     76                     }
     77                 }
     78                 i=lastX;
     79                 j=lastY+1;
     80                 state=0;
     81                 break;
     82             default:
     83                 break;            
     84             }
     85             
     86         }
     87         
     88         for(i=0;i<m;i++)
     89         {
     90             for(j=0;j<n;j++)
     91                 if(j==0)
     92                 {
     93                     cout<<setw(2)<<a[i][j];
     94                 }
     95                 else
     96                 {
     97                     cout<<setw(3)<<a[i][j];
     98                 }                
     99                 cout<<endl;
    100                 delete []a[i];
    101         }
    102         delete []a;
    103         
    104     }
    105     return 0;
    106 }
  • 相关阅读:
    一款可以下拉搜索html下拉框控件
    Springboot+JPA+Thymeleaf 校园博客完整小网站
    OAuth 2.0 认证的原理与实践
    BootStrap 专题
    Rest接口和Thymeleaf的两个坑
    Android属性动画PropertyAnimation LayoutTransition(布局容器动画)
    Android 5.0中使用JobScheduler
    遍历Map的四种方法
    Android Error:(1,N1) 错误: 需要class, interface或enum
    Android.app.SuperNotCalledException错误
  • 原文地址:https://www.cnblogs.com/liuwt365/p/4174647.html
Copyright © 2011-2022 走看看