码迷,mamicode.com
首页 > 其他好文 > 详细

发水果(猿辅导校招笔试题)

时间:2020-02-08 00:41:19      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:none   subject   ==   办公   main   mit   coder   space   技术   

[编程题]发水果

时间限制:C/C++ 2秒,其他语言4秒

空间限制:C/C++ 96M,其他语言192M

中午是猿辅导水果时间,小猿会给每个同学发水果。猿辅导有一个矩形的办公区域,共有N 排,每排M个工位。平时小猿按照从第一排到最后一排的顺序发水果,某一天小猿突然发现似乎旋转着发水果是一种更有趣的方式,所以决定试试按照逆时针方向螺旋发水果。
已知每个工位有一个数字,表示该工位员工的工号,每个员工的工号不同。已知小猿从(0, 0)位置开始,按照逆时针螺旋的顺序发水果,请输出收到水果的员工工号序列。

输入描述:
第一行 两个数, 数组行列 N,M
接下来 N 行,每行 M 个正整数,表示每个位置的员工工号
1 ≤ N ≤ 1000
1 ≤ M ≤ 1000

输出描述:
发放水果工号序列

输入例子1:
3 3
1 2 3 
4 5 6 
7 8 9

输出例子1:
1 4 7 8 9 6 3 2 5
思路:此题就是按照逆时针正方形形状由外至内来输出正方形边上的员工工号序列。
技术图片
 1 #include<iostream>
 2 
 3 using namespace std;
 4 
 5 const int N = 1010;
 6 
 7 int n, m ,a[N][N];
 8 
 9 
10 int main(){
11     cin >> n >> m;
12 
13     int mm = m , nn = n;
14 
15     for(int i = 0 ; i < n ; i ++)
16         for(int j = 0 ; j < m ; j ++) scanf("%d",&a[i][j]);
17 
18     int sum = n * m;
19     int i = 0 , j = 0;
20     while(sum){
21         for(; i < nn ; i ++){
22             printf("%d ",a[i][j]);
23             sum --;
24             if(sum == 0) return 0;
25         }
26         i --;
27         j ++;
28 
29         for(; j < mm ; j ++){
30             printf("%d ",a[i][j]);
31             sum --;
32             if(sum == 0) return 0;
33         }
34         j --;
35         i --;
36 
37         for(; i >= n - nn ; i --){
38             printf("%d ",a[i][j]);
39             sum --;
40             if(sum == 0) return 0;
41         }
42         i ++;
43         j --;
44 
45         for(; j > m - mm ; j --){
46             printf("%d ",a[i][j]);
47             sum --;
48             if(sum == 0) return 0;
49         }
50         j ++;
51         i ++;
52         mm --;
53         nn --;
54     }
55     return 0;
56 }
View Code

 

 

发水果(猿辅导校招笔试题)

标签:none   subject   ==   办公   main   mit   coder   space   技术   

原文地址:https://www.cnblogs.com/ZhaoHaoFei/p/12275034.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!