武汉科技大学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 }
时间: 2024-08-05 10:14:19

武汉科技大学ACM:1008: 零起点学算法64——回型矩阵的相关文章

武汉科技大学ACM :1008: 零起点学算法58——开灯问题

Problem Description 计算中心有8个机房,每个机房有n台电脑.每台电脑都有一个编号,比如8号机房编号就为H1到Hn,我们有时又称为H1为1号机器,H2为2号机器,.... 有一天我们学校跻身世界高校100强,全校所有师生都进行了狂欢庆祝.罗老师是个很爽快的人,也很喜欢喝酒,那天他喝多了点.但不巧的是那天晚上正好罗老 师值班,罗老师是个很负责的老师.所以他就把8号机房打开了.但同学们都还在狂欢,没一个人来上机.罗老师提着一瓶酒,感觉到很无聊,所以他想玩个游戏. 第一回合,他喝了一

1165: 零起点学算法72——首字母变大写

1165: 零起点学算法72--首字母变大写 Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitted: 705  Accepted: 439[Submit][Status][Web Board] Description 输入一个英文句子,将每个单词的第一个字母改成大写字母. Input 输入数据包含多个测试实例,每个测试实例是一个长度不超过100的英文句子,占一行. Output 请输出按照要求改写后的英文句

1122: 零起点学算法29——等级分制度

1122: 零起点学算法29--等级分制度 Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitted: 2657  Accepted: 1379[Submit][Status][Web Board] Description ACM集训队每年都要招新队员.他们很多从大一开始就练了.当然一开始都是从hello world练起的,后来很多人成了牛人. 你想参加吗?如果你感兴趣,赶快加入.可以写Email武科大ACM俱

1169: 零起点学算法76——绝对公正的裁判

1169: 零起点学算法76--绝对公正的裁判 Time Limit: 1 Sec  Memory Limit: 128 MB   64bit IO Format: %lldSubmitted: 510  Accepted: 336[Submit][Status][Web Board] Description 大家知道我们学校的OnlineJudge吗?,你知道他会告诉你什么呢? Compiling : 您提交的代码正在被编译.Running : 您的程序正在OJ上运行.Judging : OJ

1127: 零起点学算法34——继续求多项式

1127: 零起点学算法34--继续求多项式 Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitted: 3481  Accepted: 1985[Submit][Status][Web Board] Description 输入1个正整数n, 计算1+(1+2)+(1+2+3)+...+(1+2+3+...+n) Input 输入正整数n(多组数据) Output 输出1+(1+2)+(1+2+3)+...+

1128: 零起点学算法35——再求多项式(含浮点)

1128: 零起点学算法35--再求多项式(含浮点) Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitted: 2141  Accepted: 1002[Submit][Status][Web Board] Description 输入一个整数n,计算 1+1/(1-3)+1/(1-3+5)+...+1/(1-3+5-...+2n-1)的值 Input 输入一个整数n(多组数据) Output 出1+1/(1

1097:零起点学算法04——再模仿一个算术题

1097: 零起点学算法04--再模仿一个算术题 Time Limit: 1 Sec  Memory Limit: 128 MB   64bit IO Format: %lldSubmitted: 2627  Accepted: 2202[Submit][Status][Web Board] Description 上题会模仿了吧.再来模仿一个. 现在要求你模仿一个乘法的算术题 Input 没有输入 Output 输出9乘以10的值 Sample Output 90 Source 零起点学算法

1098: 零起点学算法05——除法算术题

1098: 零起点学算法05--除法算术题 Time Limit: 1 Sec  Memory Limit: 128 MB   64bit IO Format: %lldSubmitted: 2346  Accepted: 1932[Submit][Status][Web Board] Description 乘法会了,除法也一样的.不要跟我说不会哦. Input 没有输入 Output 输出12除以2的值,计算让计算机去做哦 Sample Output 6 Source 零起点学算法 1 #i

1099:零起点学算法06——再来一题除法算术题

1099: 零起点学算法06--再来一题除法算术题 Time Limit: 1 Sec  Memory Limit: 128 MB   64bit IO Format: %lldSubmitted: 4811  Accepted: 1917[Submit][Status][Web Board] Description 再来一题除法算术题 Input 没有输入 Output 输出8除以5,保留1位小数 Sample Output 1.6 Source 零起点学算法 1 # include <std