1050. 螺旋矩阵(25)

1050. 螺旋矩阵(25)

时间限制
150 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue

本题要求将给定的N个正整数按非递增的顺序,填入“螺旋矩阵”。所谓“螺旋矩阵”,是指从左上角第1个格子开始,按顺时针螺旋方向填充。要求矩阵的规模为m行n列,满足条件:m*n等于N;m>=n;且m-n取所有可能值中的最小值。

输入格式:

输入在第1行中给出一个正整数N,第2行给出N个待填充的正整数。所有数字不超过104,相邻数字以空格分隔。

输出格式:

输出螺旋矩阵。每行n个数字,共m行。相邻数字以1个空格分隔,行末不得有多余空格。

输入样例:
12
37 76 20 98 76 42 53 95 60 81 58 93
输出样例:
98 95 93
42 37 81
53 20 76
58 60 76
解题计划:

1,根据N,找出符合条件的m,n;

2,一个一维数组int Arr[len]可以根据首地址Arr和len这两个量唯一确定,同样二维数组int Arr_2D[row][col]可以用首地质Arr_2D和row,col三个量唯一确定,因此这里采用递归的方法,就像播洋葱一样,一层一层的剥掉(输出);


由本题所学到的:

1,二维数组怎样调用;

2,递归函数应用;


代码:

/*************************************************************************> File Name: 1050.c> Author: YueBo> Mail: yuebowhu@163.com> Created Time: Sun 11 Jun 2017 11:27:00 AM CST************************************************************************/#include <stdio.h>
#include <math.h>
#include <stdlib.h>int arr[10240][10240];
void get(int N, int *pm, int *pn)
{int i;for (i = (int)sqrt((double)N); i <= N; i++){*pm = i;*pn = (int)(N / i);if (N % i == 0 && *pm >= *pn){return;}}return;
}void insertMatrix(int arr[][10240], int input[], int start, int start_i, int start_j, int m, int n)
{int i, j, k;if (m < 1 || n < 1){return;}k = start;for (j = 0; j < n; j++){arr[start_i+0][start_j+j] = input[k];k++;}for (i = 1; i < m-1; i++){arr[start_i+i][start_j+n-1] = input[k];k++;}for (j = n-1; j >= 0 && m > 1; j--){arr[start_i+m-1][start_j+j] = input[k];k++;}for (i = m-2; i >= 1 && n > 1; i--){arr[start_i+i][start_j+0] = input[k];k++;}insertMatrix(arr, input, k, start_i+1, start_j+1, m-2, n-2);
}void printMatrix(int (*arr)[10240], int m, int n)
{int i, j;for (i = 0; i < m; i++){for (j = 0; j < n; j++){printf("%d%s", arr[i][j], j < n-1 ? " ":"");}printf("\n");}
}int cmp(const void *a, const void *b)
{return *(int *)b - *(int *)a;
}int main()
{int N, m, n;int i, j;scanf("%d", &N);get(N, &m, &n);int *input = (int *)malloc(N*sizeof(int));for (i = 0; i < N; i++){scanf("%d", input+i);}qsort(input, N, sizeof(int), cmp);insertMatrix(arr, input, 0, 0, 0, m, n);printMatrix(arr, m, n);return 0;
}









本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/421103.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java多线程,锁(synchronize),饿汉式单例线程,等待处理机制

一&#xff0c;礼让和守护线程 package com.much.hard;public class TestYieldProtect {public static void main(String[] args) {Yield1 y1 new Yield1();y1.setName("A");Yield2 y2 new Yield2();y2.setName("B");//y1.start();//y2.start();Daemon1…

升级ADT22.6后,Android模拟器无法创建

这 两天&#xff0c;在社区里看到有小伙伴们反应&#xff0c;自己在Eclipse下无法创建Android模拟器的问题。起初&#xff0c;自己也没太在意&#xff0c;我一直使用的是 Genymotion模拟器。然后&#xff0c;问题不解决&#xff0c;总有那么一天会让自己碰到的。这不&#xff0…

1052. 卖个萌 (20)

1052. 卖个萌 (20) 时间限制400 ms内存限制65536 kB代码长度限制8000 B判题程序Standard作者CHEN, Yue萌萌哒表情符号通常由“手”、“眼”、“口”三个主要部分组成。简单起见&#xff0c;我们假设一个表情符号是按下列格式输出的&#xff1a; [左手]([左眼][口][右眼])[右手]…

原来js的parseInt函数还可以这样用

QQpc端登录账号还可以这样玩&#xff01;&#xff01;&#xff01; 图片上来。 wow&#xff0c;我惊呆了。 居然可以登录进出&#xff1f;&#xff01; 都知道&#xff0c;登录会验证账号是整数&#xff0c;文本框输入的是字符串&#xff0c;会把字符串转成整数&#xff0c; 而…

一步步学习SPD2010--词汇表

association关联&#xff1a;两个ECTs外部内容类型间的关系。 BCS业务连接服务&#xff1a;见Business Connectivity Service(BCS) BDC业务数据连接&#xff1a;见Business Data Connectivity&#xff08;BDC&#xff09; breadcrumb面包屑导航&#xff1a; 一系列链接&#xf…

1035. 插入与归并(25)

1035. 插入与归并(25) 时间限制200 ms内存限制65536 kB代码长度限制8000 B判题程序Standard作者CHEN, Yue根据维基百科的定义&#xff1a; 插入排序是迭代算法&#xff0c;逐一获得输入数据&#xff0c;逐步产生有序的输出序列。每步迭代中&#xff0c;算法从输入序列中取出一元…

自定义泛型集合,接口

自定义泛型集合 package C12_21;public class abstractList {public static void main(String[] args) {stu<String> stus new stu<String>();stus.setS("hello");System.out.println(stus.getS());// 灵活, 可以传入任意数据类型。 将运行错误转变为编…

安装json扩展

json_encode无法使用&#xff0c;要求扩展php>5.2,json>2.1.0 http://syue.com/Software/Web/php/17843.html 改php.ini加extensionjson.so转载于:https://www.cnblogs.com/mucaiweiblog/p/3618599.html

实验1 熟悉实验环境

本操作系统实验的硬件环境是IA-32(x86)架构的PC机&#xff08;就是你现在正在使用的计算机&#xff09;&#xff0c;主要软件环境是Bochs gcc 你最喜欢的编辑器/IDE 你最喜欢的操作系统 Linux 0.11源代码。实验的基本流程是根据实验要求编写应用程序、修改Linux 0.11的源代…

c/s和b/s两种开发模式

CS&#xff08;Client/Server&#xff09;&#xff1a;客户端----服务器结构。 C/S结构在技术上很成熟&#xff0c;它的主要特点是交互性强、具有安全的存取模式、网络通信量低、响应速度快、利于处理大量数据。因为客户端要负责绝大多数的业务逻辑和UI展示&#xff0c;又称为…

前端学习(1032):jquery插件-瀑布流

1网址打开 下载插件 2引入css和js和html 3修改图片

实验2 操作系统的引导

操作系统的引导 实验目的 熟悉hit-oslab实验环境&#xff1b;建立对操作系统引导过程的深入认识&#xff1b;掌握操作系统的基本开发过程&#xff1b;能对操作系统代码进行简单的控制&#xff0c;揭开操作系统的神秘面纱。 实验内容 此次实验的基本内容是&#xff1a; 阅读《…

从Tom说JSP原理

第一次执行&#xff1a; 客户端通过电脑连接服务器&#xff0c;因为是请求是动态的&#xff0c;所以所有的请求交给WEB容器来处理在容器中找到需要执行的*.jsp文件之后*.jsp文件通过转换变为*.java文件.java文件经过编译后&#xff0c;形成.class文件最终服务器要执行形成的*.…

初识SolrJ开发, schema.xml的配置与服务初始化.

schema.xml位于solr/collection1/conf/目录下&#xff0c;是Solr中用户定义字段类型及字段的配置文件. Solr版本: 4.6.0 第一步: Schema.xml说明 实例schema.xml结构同solr/collection1/conf/schema.xml结构一致,具体配置通过注解已注明. <?xml version"1.0" enc…

实验3 编程、编译、链接、跟踪

本章的核心知识点在4.9节&#xff0c;王爽老师讲的特别清楚明白&#xff0c;多读几遍&#xff0c;跟着多做几遍&#xff0c;增加对底层的感觉&#xff1b; 本实验的目的是明白4.9节所讲的东西&#xff0c;具体点如下&#xff1a; 1&#xff0c;command&#xff0c;debug&…

Java动态查询

CODING COMING. // 组合模糊查询 根据年龄 和 姓名 模糊查询 学生。public List<Student> findTwo(int age, String name) {List<Student> list new ArrayList<Student>();StringBuffer sql new StringBuffer("select * from student where 1 1&quo…

前端学习(1033):jquery插件-图片懒加载

1下载插件 2html css和js引入 ctrlh 快速替换 必须最后插入

对自己有用的VS调试技巧

设置下一条语句编辑然后继续符号越界后查看堆对象查看数组的值底部设置下一条语句 返回顶部 一个典型的调试情况就是通过单步跟踪分析为什么一个函数调用失败了。当你发现一个函数调用的另一个函数返回错误的时候你会怎么做&#xff1f;重启调试&#xff1f;有更好的方法。拖动…