1050. 螺旋矩阵(25)
2017-10-26 23:32
316 查看
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
提交代码
/* 这个题目需要动态分配数组大小,要不然会有一个点一直过不去 */ #include<iostream> #include<cstdio> #include<string> #include<fstream> #include<cstdlib> #include<iomanip> #include<sstream> #include<algorithm> #include<cmath> using namespace std; bool cmp(const int a, const int b) { return a>b; } int main() { int N, m, n; int data[50000];//这个弄大点。。最后两个段错误是因为这个。 bool tag = true; cin >> N; //计算因数 for (n = (int)sqrt(N); tag; n--) { for (m = (int)sqrt(N); m<=N; m++) { if (m*n == N) { tag = false; ++n;//退出外圈循环时n还会-1 break; } } } //输入数据&排序 for (int i = 0; i<N; i++) cin >> data[i]; sort(data, data + N, cmp); int left = 0, right = n, up = 0, down = m;//上下左右边界 int counter = 0;//输出计数 //分配矩阵内存 int **a = new int*[m]; for (int i = 0; i < m; i++) a[i] = new int ; while (counter<N) { for (int i = left; i<right; i++) {//输出在最上边 a[up][i] = data[counter]; counter++; } up++; if (counter >= N)//每一次边界改动都要检查是否输出完成。 break; for (int i = up; i<down; i++) {//输出在最右边 a[i][right - 1] = data[counter]; counter++; } right--; if (counter >= N) break; for (int i = right - 1; i >= left; i--) {//输出在最下边 a[down - 1][i] = data[counter]; counter++; } down--; if (counter >= N) break; for (int i = down - 1; i >= up; i--) {//输出在最左边 a[i][left] = data[counter]; counter++; } left++; if (counter >= N) break; } int i, q; for (i = 0; i<m; i++) { for (q = 0; q<n - 1; q++) { cout << a[i][q] << " "; } cout << a[i][q]; //最后一个数单独输出 避免行末空格 cout << endl; } cin.get(); cin.get(); return 0; }
相关文章推荐
- PAT 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25)
- PAT乙级 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25)
- PAT (Basic Level) Practise (中文)1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25)-PAT乙级真题
- 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25) python篇
- 1050. 螺旋矩阵(25) PAT
- PAT乙级—1050. 螺旋矩阵(25)-native
- 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25) PAT乙级&&1105. Spiral Matrix (25)PAT甲级
- 1050. 螺旋矩阵(25).
- 1050. 螺旋矩阵(25)
- PAT BASIC LEVEL 1050. 螺旋矩阵(25)
- 【PAT】B. Spiral Matrix (25) 1050. 螺旋矩阵(25)
- PAT 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25)