心得

思路:一个0~10000的数写成M*N的形式,且M>N,则M的范围是0~10000,N的范围是0~100
这个对于m,n的判断很重要,因为二维数组不能开的太大,10000*10000会显示段错误
几种段错误的原因:数组访问越界,或者数组开得过大
如何判断测试点是几:吸收测试点的total之后,用if判断,二分法,如果大于某数,直接返回(看结果是段错误还是答案错误,再二分)

测试点7是9973!!!

比如下面这个过程:

5000~9999之间没有测试点1000~5000之间没有测试点500~1000之间没有测试点测试点7段错误测试点7在500之上
测试点7在1000之上
测试点7在2500之上
测试点7在7500之上
测试点7在9500之上
测试点7在9900之上
测试点7在9945之上
测试点7在9968之上
测试点7在9971之上测试点7不是9971,9972测试点7是9973!!!测试点7在9974之下
测试点7在9979之下
测试点7在9990之下

用习惯了VS2017之后,就回不去dev或者其他ide了,vs太好用了啊!尤其是调试功能以及随时报错、语法联想功能!
但是考试的环境没有vs2017,只好提前用dev熟悉一下。这道题是第一道用dev做出的25分题,花了不少时间,但熟悉环境是主要的。也由此说明了不要过分依赖某一个特定的ide(尽管它真的很好用…),况且是在刷算法题,而不是开发一个项目。那些不用ide的控制台党不也一样高效的写代码吗?陌生的ide不应成为设计算法的瓶颈。

题目

和OJ斗智斗勇

全部通过

代码

#include<iostream>
#include<math.h>
#include<algorithm>
using namespace std;int mySort(int a1,int a2)
{return(a1>a2);
}int main()
{int total;cin>>total;//输入int i,j;int arr[10000];for(i=0;i<total;i++){cin>>arr[i];} //计算m,n   m行n列 int m=0,n=0;for(i=1;i<=sqrt(total);i++){if(total%i==0){n=i;m=total/n;}}//排序sort(arr,arr+total,mySort);//摆放int bi[10000][100];int totalFlag=0;//按圈遍历int up=0;int down=m-1;int left=0;int right=n-1; //   cout<<"m="<<m<<endl;
//  cout<<"n="<<n<<endl;
//  cout<<"up="<<up<<endl;
//  cout<<"down="<<down<<endl;
//  cout<<"left="<<left<<endl;
//  cout<<"right="<<right<<endl;while(1){if(totalFlag==total)break;//上for(i=left;i<=right;i++){bi[up][i]=arr[totalFlag];totalFlag++;}if(totalFlag==total)break;//右 for(i=up+1;i<=down;i++){bi[i][right]=arr[totalFlag];totalFlag++;}if(totalFlag==total)break;//下for(i=right-1;i>=left;i--){bi[down][i]=arr[totalFlag];totalFlag++;}if(totalFlag==total)break;//左 for(i=down-1;i>=up+1;i--){bi[i][left]=arr[totalFlag];totalFlag++;}if(totalFlag==total)break;//改变边界 up++;down--;left++;right--;} //打印for(i=0;i<m;i++){for(j=0;j<n;j++){cout<<bi[i][j];if(j!=n-1)cout<<' ';}if(i!=m-1)cout<<endl;} return 0;
}

PAT1050 螺旋矩阵 (25 分)【全部通过 关于段错误的原因 以及测试点7】相关推荐

  1. C++学习之路 | PTA乙级—— 1050 螺旋矩阵 (25 分)(精简)

    1050 螺旋矩阵 (25 分) 本题要求将给定的 N 个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上角第 1 个格子开始,按顺时针螺旋 ...

  2. 【最全解析】1050 螺旋矩阵 (25分)

    立志用更少的代码做更高效的表达 Pat乙级最优化代码+题解+分析汇总-->传送门 本题要求将给定的 N 个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵&q ...

  3. 【PAT乙级】1050 螺旋矩阵 (25 分)

    题目地址 #include<cstdio> #include<iostream> #include<string> #include<vector> # ...

  4. 1050. 螺旋矩阵(25)

    本题要求将给定的N个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上角第1个格子开始,按顺时针螺旋方向填充.要求矩阵的规模为m行n列,满足条 ...

  5. 1050. 螺旋矩阵(25)-PAT乙级真题

    本题要求将给定的N个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上角第1个格子开始,按顺时针螺旋方向填充.要求矩阵的规模为m行n列,满足条 ...

  6. python 1070 结绳 (25 分) 给定一段一段的绳子,你需要把它们串成一条绳。每次串连的时候,是把两段绳子对折,再如下图所示套接在一起。这样得到的绳子又被当成是另一段绳子,可以再次对折去跟另

    Python 1070 结绳 (25 分) 解题思路呢就是:长度很长的绳子如果一直对折只会越折越短而且短的相较长度不长的绳子要短得多,即长绳子对折比短绳子损耗的更多,如果要想获得最后尽可能长的绳子,就 ...

  7. PAT (Basic Level) Practice (中文)1070 结绳 (25 分) 凌宸1642

    PAT (Basic Level) Practice (中文)1070 结绳 (25 分) 凌宸1642 题目描述 给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下 ...

  8. 点赞狂魔 (25 分) C语言

    点赞狂魔 (25 分) 微博上有个"点赞"功能,你可以为你喜欢的博文点个赞表示支持.每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了你的特性.然而有这么一种人, ...

  9. 1050 螺旋矩阵 (25 分

    本题要求将给定的 N 个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上角第 1 个格子开始,按顺时针螺旋方向填充.要求矩阵的规模为 m 行 ...

最新文章

  1. Ret2Libc(1) (有system、/bin/sh)绕过NX、ASLR
  2. lnmp shell安装脚本
  3. pytorch 中 logsoftmax 与 softmax的区别
  4. *.tar.bz2文件解压
  5. python2 x与python3 x_python2.x 与 python3.x的不同
  6. 掌握Angular2的服务(service)
  7. 【Python金融量化 1- 100 】了解Python及常用财经数据接口包
  8. Centos 7 修改主机名
  9. android studio 无法输入中文,Android Studio 升级到3.0后输入法中文状态下无法选词的终极解决方案...
  10. 秒杀场景_多线程异步抢单队列分析与实现_02
  11. 用Java写有关早上的语录,实用的适合早上发的早安问候语语录汇编39句
  12. java关于贪吃蛇的源代码_完整的贪吃蛇(蛇吃蛋)Java源代码
  13. 【英语学习】【WOTD】nomothetic 释义/词源/示例
  14. Oralce weblogic 11g 安装部署使用手册
  15. 探寻成功之路 企业共同关心
  16. Java案例2-1 商品入库
  17. Ubuntu常用软件推荐
  18. PLM与PDM的概念与区别
  19. reboot流程简述
  20. apple id两步验证服务器,apple id两步验证 苹果Apple ID两步式验证设置使用教程

热门文章

  1. 机器学习-Stacking方法的原理及实现
  2. 机器学习-分类之多层感知机原理及实战
  3. 在Ubuntu18上搭建K8s集群(1.19.3)
  4. HDU4546(优先队列)
  5. NEFU705(数论+DP)
  6. 基于 ida 的反汇编转换 Obj 的可行性 笔记(2)
  7. 【网络编程】之八、异步选择WSAAsyncSelect
  8. 用完成例程(Completion Routine)实现的重叠I/O模型
  9. 高级数据结构与算法 | 深度遍历搜索(DFS)与广度遍历搜索(BFS)
  10. 数据结构与算法 | 带头双向循环链表