当前位置: 首页 > news >正文

360 网站备案品牌网站设计制作哪家正规

360 网站备案,品牌网站设计制作哪家正规,关键词全网搜索,公司做网站属于什么费用前言 ※ PTA是 程序设计类实验辅助教学平台 #xff0c;里边包含一些编程题目集以供练习。 这道题用java解#xff0c;我试了三种解法#xff0c;不断优化#xff0c;但始终是三个测试点通过、三个测试点超时。我把我的代码放在这里#xff0c;做个参考吧。 1015 德才…前言 ※  PTA是 程序设计类实验辅助教学平台 里边包含一些编程题目集以供练习。 这道题用java解我试了三种解法不断优化但始终是三个测试点通过、三个测试点超时。我把我的代码放在这里做个参考吧。 1015 德才论 题目 题目     作者 CHEN, Li 单位 浙江大学 宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”“是故才德全尽谓之圣人才德兼亡谓之愚人德胜才谓之君子才胜德谓之小人。凡取人之术苟不得圣人君子而与之与其得小人不若得愚人。” 现给出一批考生的德才分数请根据司马光的理论给出录取排名。 输入格式 输入第一行给出 3 个正整数分别为N≤10^5即考生总数L≥60为录取最低分数线即德分和才分均不低于 L 的考生才有资格被考虑录取H100为优先录取线——德分和才分均不低于此线的被定义为“才德全尽”此类考生按德才总分从高到低排序才分不到但德分到优先录取线的一类考生属于“德胜才”也按总分排序但排在第一类考生之后德才分均低于 H但是德分不低于才分的考生属于“才德兼亡”但尚有“德胜才”者按总分排序但排在第二类考生之后其他达到最低线 L 的考生也按总分排序但排在第三类考生之后。 随后 N 行每行给出一位考生的信息包括准考证号 德分 才分其中准考证号为 8 位整数德才分为区间 [0, 100] 内的整数。数字间以空格分隔。 输出格式 输出第一行首先给出达到最低分数线的考生人数 M随后 M 行每行按照输入格式输出一位考生的信息考生按输入中说明的规则从高到低排序。当某类考生中有多人总分相同时按其德分降序排列若德分也并列则按准考证号的升序输出。 输入样例 14 60 80 10000001 64 90 10000002 90 60 10000011 85 80 10000003 85 80 10000004 80 85 10000005 82 77 10000006 83 76 10000007 90 78 10000008 75 79 10000009 59 90 10000010 88 45 10000012 80 100 10000013 90 99 10000014 66 60输出样例 12 10000013 90 99 10000012 80 100 10000003 85 80 10000011 85 80 10000004 80 85 10000007 90 78 10000006 83 76 10000005 82 77 10000002 90 60 10000014 66 60 10000008 75 79 10000001 64 90 代码     我用java写了三种解法测试结果都是三个测试点正确、三个测试点超时。研究半天也没搞明白到底为什么超时难道是只能用C语言才不会超时发出来做个参考吧。 解法一   用二维数组存储学生信息同时用这个数组作为静态链表来排序定义一个int作为头指针最后打印时降序输出即可。代码如下。 /* 功能根据规则对给定考生成绩进行排序并输出 实现思路用数组存储每个考生的信息并且用数组作为静态链表实现排序。 时间复杂度 空间复杂度 */ import java.io.*; class Main{public static void main(String[] args) throws IOException{//接收输入BufferedReader br new BufferedReader(new InputStreamReader(System.in));String[] arr1 br.readLine().split( );int n Integer.parseInt(arr1[0]); //考生总数int l Integer.parseInt(arr1[1]); //最低录取分数线int h Integer.parseInt(arr1[2]); //优秀录取线//在线排序int[][] a new int[n][6]; //数组每一行代表一个考生存储考号、德分、才分、总分、等级、链表序号int m 0; //录取总人数String[] b new String[3]; //接收当前考生的信息int yi -1; //已录取学生排序链表中的第一名的角标for(int i0;in;i){ //在线处理每个考生的信息b br.readLine().split( ); //接收当前考生的信息a[i][0] Integer.parseInt(b[0]); //将考生信息转为inta[i][1] Integer.parseInt(b[1]);a[i][2] Integer.parseInt(b[2]);a[i] getGrade(a[i],l,h); //调用函数填写总分及等级信息排序地址初始化if(a[i][4]5){ //若是第一~第四类考生m; //则录取a getSort(a,i,yi); //调用函数填写链表地址信息if(a[i][5]yi) //判断是否要更新第一名的角标yi i;}}//打印输出System.out.print(m); //输出录取总人数if(m0) return; //若是录取人数为0则直接返回String stu ;for(int iyi;;ia[i][5]){ //按数组静态链表的排序以成绩降序输出stu \n a[i][0] a[i][1] a[i][2];System.out.print(stu);if(a[i][5]-1) //若是链表中录取的最后一名break; //则跳出循环停止打印}}private static int[] getGrade(int[] a,int l,int h){//功能根据数组中学生成绩填写总分及等级信息 。l是录取线h是优秀线。a[3] a[1] a[2]; //计算总分a[5] -1; //排序地址信息初始化if(a[1]l || a[2]l){ //若德才有一项未达到录取线a[4] 5; //第五类考生不予录取return a;}if(a[1]h a[2]h){ //若德才均优秀a[4] 1; //第一类考生return a;}if(a[1]h){ //若德分优秀而才分不优秀a[4] 2; //第二类考生return a;} if(a[1]a[2]){ //若德分不优秀但德分≥才分a[4] 3; //第三类考生return a;}a[4] 4; //其它考生为第四类考生return a;}private static int[][] getSort(int[][] a,int t,int yi){//功能对数组中指定学生的成绩以数组静态链表方式排序并返回数组//参数 a[][] 学生信息数组 t 待排序学生角标 yi 已排序的录取学生链表中第一名学生角标if(yi-1) //如果链表中还没有学生return a; //则以待排序学生作为第一名直接返回if(gradeCompare(a[t],a[yi])){ //如果待排序的学生是新的第一名a[t][5] yi; //待排序学生链接指向原先的第一名return a;}for(int iyi,ji;;ia[i][5]){ //若链表中已经有至少一名学生则正常进行排序if(gradeCompare(a[i],a[t])){ //若待排序学生成绩当前对比学生成绩ji; //用j记住当前对比学生角标if(a[i][5]-1){ //若当前对比学生已经是最后一名a[i][5] t; //将待排序学生插入到链表结尾break; //排序完毕退出循环}}else{ //若待排序学生成绩当前对比学生成绩a[j][5] t; //上一名的学生链接到待排序学生a[t][5] i; //待排序学生链接到当前对比学生break; //排序完毕退出循环}} return a;}private static boolean gradeCompare(int[] a,int[] b){//功能比较两个学生成绩学生a是否排名比学生b更靠前if(a[4]b[4]) //若a比b等级更高return true;if(a[4]b[4]) //若a比b等级更低return false;//若ab等级相同if(a[3]b[3]) //若总分abreturn true;if(a[3]b[3]) //若总分abreturn false;//若ab总分相同if(a[1]b[1]) //若德分abreturn true;if(a[1]b[1]) //若德分abreturn false;//若ab德分相等 return (a[0]b[0])?true:false; //则按考号升序排序} } 有三个测试点超时考虑到有可能是我自己写的排序算法太慢导致超时于是我就又写了一个算法。 解法二  在接收学生信息时只存储不排序打印时调用java的排序算法在Arrays.sort()函数中传入一个Comparator匿名内部类以便自定义排序规则作为参数实现排序之后再降序打印输出。这个解法的一个缺点是要对包括未录取考生在内的所有考生进行排序而解法一只对录取考生排序。解法二的测试结果仍然是有三个测试点超时。代码如下。 /* 功能根据规则对给定考生成绩进行排序并输出 实现思路用数组存储每个考生的信息并在Arrays.sort()中传入一个Comparator匿名内部类作为参数以实现排序。 时间复杂度 空间复杂度 */ import java.io.*; import java.util.*; class Main{public static void main(String[] args) throws IOException{//接收输入BufferedReader br new BufferedReader(new InputStreamReader(System.in));String[] arr1 br.readLine().split( );int n Integer.parseInt(arr1[0]); //考生总数int l Integer.parseInt(arr1[1]); //最低录取分数线int h Integer.parseInt(arr1[2]); //优秀录取线//逐个接收考生信息Integer[][] a new Integer[n][5]; //数组每一行代表一个考生存储考号、德分、才分、总分、等级int m 0; //录取总人数String[] b new String[3]; //接收当前考生的信息for(int i0;in;i){ //在线处理每个考生的信息b br.readLine().split( ); //接收当前考生的信息for(int j0;j3;j)a[i][j] Integer.parseInt(b[j]); //将考生信息转为int a[i] getGrade2(a[i],l,h); //调用函数填写总分及等级信息if(a[i][4]5){ //若是第一~第四类考生m; //则录取}}//打印输出System.out.print(m); //输出录取总人数if(m0) return; //若是录取人数为0则直接返回//调用java提供的数组排序Arrays.sort(a, new ComparatorInteger[]() { //new一个Comparator匿名内部类重写compare方法public int compare(Integer[] b, Integer[] a) {if(a[4]b[4]) //若a比b等级更高return 1;if(a[4]b[4]) //若a比b等级更低return -1;//若ab等级相同if(a[3]b[3]) //若总分abreturn 1;if(a[3]b[3]) //若总分abreturn -1;//若ab总分相同if(a[1]b[1]) //若德分abreturn 1;if(a[1]b[1]) //若德分abreturn -1;//若ab德分相等 return (a[0]b[0])?1:-1; //则按考号升序排序}});//降序输出学生信息String stu ;for(int i0;im;i){stu \n a[i][0] a[i][1] a[i][2];System.out.print(stu);} }private static Integer[] getGrade2(Integer[] a,int l,int h){//功能根据数组中学生成绩填写总分及等级信息 。l是录取线h是优秀线。a[3] a[1] a[2]; //计算总分if(a[1]l || a[2]l){ //若德才有一项未达到录取线a[4] 5; //第五类考生不予录取return a;}if(a[1]h a[2]h){ //若德才均优秀a[4] 1; //第一类考生return a;}if(a[1]h){ //若德分优秀而才分不优秀a[4] 2; //第二类考生return a;} if(a[1]a[2]){ //若德分不优秀但德分≥才分a[4] 3; //第三类考生return a;}a[4] 4; //其它考生为第四类考生return a;} } 解法三  既然用java自带的排序算法也不行那索性还是自己用数组做静态链表的排序吧。考虑到解法一中每个考生排序都要从第一类第一名开始比较比较耗时因此我又改进了一下给四个类别分别设置一个本类别第一名的int角标作为指针。这样每个考生在排序时只需从所属类别的第一名开始比较即可。此外这个解法中我还把一些工具函数优化了一下。遗憾的是测试结果仍然是三个点通过、三个点超时。 /* 功能根据规则对给定考生成绩进行排序并输出 实现思路用数组存储每个考生的信息并且用数组作为静态链表实现排序。 时间复杂度 空间复杂度 */ import java.io.*; class Main{public static void main(String[] args) throws IOException{//接收基本信息输入BufferedReader br new BufferedReader(new InputStreamReader(System.in));String[] arr1 br.readLine().split( );int n Integer.parseInt(arr1[0]); //考生总数int l Integer.parseInt(arr1[1]); //最低录取分数线int h Integer.parseInt(arr1[2]); //优秀录取线//数组初始化int[][] a new int[n][6]; //数组每一行代表一个考生存储考号、德分、才分、总分、等级、链表序号int m 0; //录取总人数String[] b new String[3]; //接收当前考生的信息Integer yi[] new Integer[4]; //已录取学生排序链表中第一类至第四类的第一名的角标for(int i0;i4;i){ //数组初始化为-1yi[i] -1;}//在线处理 接收每个学生信息并排序存入数组中for(int i0,temp-1;in;i){ //在线处理每个考生的信息b br.readLine().split( ); //接收当前考生的信息a[i][0] Integer.parseInt(b[0]); //将考生信息转为inta[i][1] Integer.parseInt(b[1]);a[i][2] Integer.parseInt(b[2]);a[i] getGrade(a[i],l,h); //调用函数填写总分及等级信息排序地址初始化if(a[i][4]!5){ //若是第一~第四类考生m; //则录取temp a[i][4]-1; //当前学生所属类别从0开始计数yi[temp]是所属类别第一名的角标a getSort(a,i,yi[temp]); //调用函数填写链表地址信息if(a[i][5]yi[temp]) //判断是否要更新该生所属类别第一名的角标yi[temp] i;}}//打印输出System.out.print(m); //输出录取总人数if(m0) return; //若是录取人数为0则直接返回String stu ;for(int j0;j4;j){ //遍历四个学生类别if(yi[j]-1) //若当前类别没有学生continue; //就继续下一个类别for(int iyi[j];;ia[i][5]){ //按数组静态链表的排序以成绩降序输出stu \n a[i][0] a[i][1] a[i][2];System.out.print(stu);if(a[i][5]-1) //若是链表中录取的最后一名break; //则跳出循环停止本类别的打印}} }private static int[] getGrade(int[] a,int l,int h){//功能根据数组中学生成绩填写总分及等级信息 。l是录取线h是优秀线。if(a[1]l || a[2]l){ //若德才有一项未达到录取线a[4] 5; //第五类考生不予录取return a;}a[5] -1; //对录取学生排序地址信息初始化a[3] a[1] a[2]; //对录取学生计算德才总分if(a[1]h){ //若德分优秀a[4] (a[2]h)?1:2; //若才分也优秀则为第一类否则为第二类return a;}a[4] (a[1]a[2])?3:4; //若德分不优秀但德分≥才分则为第三类否则其它考生为第四类return a;}private static int[][] getSort(int[][] a,int t,int yi){//功能对数组中指定学生的成绩以数组静态链表方式排序并返回数组//参数 a[][] 学生信息数组 t 待排序学生角标 yi 待排序学生所属类别的第一名学生角标if(yi-1) //如果当前学生所属类别中还没有学生return a; //则以待排序学生作为第一名直接返回if(gradeCompare(a[t],a[yi])){ //如果待排序的学生是新的第一名a[t][5] yi; //待排序学生链接指向原先的第一名return a;}for(int iyi,ji;;ia[i][5]){ //若链表中已经有至少一名学生则正常进行排序if(gradeCompare(a[i],a[t])){ //若待排序学生成绩当前对比学生成绩ji; //用j记住当前对比学生角标if(a[i][5]-1){ //若当前对比学生已经是最后一名a[i][5] t; //将待排序学生插入到链表结尾break; //排序完毕退出循环}}else{ //若待排序学生成绩当前对比学生成绩a[j][5] t; //上一名的学生链接到待排序学生此时j是链表中上一名学生的角标a[t][5] i; //待排序学生链接到当前对比学生break; //排序完毕退出循环}} return a;}private static boolean gradeCompare(int[] a,int[] b){//功能比较两个等级相等的学生成绩学生a是否排名比学生b更靠前if(a[3]!b[3]) //若总分不相等return (a[3]b[3]); //则返回总分比较结果if(a[1]!b[1]) //若德分不相等return (a[1]b[1]); //则返回德分比较结果return (a[0]b[0]); //最后按考号升序排序} } 结语 以上用java的三种解法都会超时难道这道题必须用C语言才能不超时吗也许可以根据考生成绩生成一个唯一的序号再利用这个序号进行数组的快速排序等试验了再回来更新吧。
http://www.w-s-a.com/news/852196/

相关文章:

  • 制作一个门户网站需要多少钱营销型网站特征
  • 手机网站 多html中国建设银行网站包头分行
  • 哪个网站做免费广告好招牌图片效果图设计制作
  • 网站建设优化服务机构苏州市做网站
  • 网站如何优化流程企业网站管理系统视频教程
  • 我想克隆个网站 怎么做贵州住房和城乡建设厅官网
  • 网站建设项目前景上海今天新闻综合频道
  • 做网站推销的如何谈客户wordpress怎么做商城
  • 摄影素材库网站服装页面设计的网站
  • 如何用国外网站做头条做个游戏app的费用大概多少
  • 网站 形象入口页福州网站建设网络公司排名
  • 免费下载教学设计的网站送网站建设管理信息内容审核制度
  • 外贸专业网站的公司百度旗下13个app
  • 物理组简介 网站建设高师院校语言类课程体系改革与建设 教学成果奖申报网站
  • 爱网站无法登录怎么回事手表网
  • 网站建设公司现在还挣钱吗山西手动网站建设推荐平台
  • 重庆建设工程交易信息网站网站制作公司起名
  • 东莞寮步做网站的有吗企业宣传册制作
  • 做网站的软件是哪个上蔡做网站
  • 前后端分离实现网站开发紧急通知网页升级
  • 河北专业网站建设公司推荐佛山小程序开发平台
  • 网站开发强制开启浏览器极速模式建设网站有什么风险
  • 360全景网站建设常州专业网站建设公司咨询
  • 重庆大渡口网站建设网站增加一体化建设功能的好处
  • 网站开发完整视频网站上传 404
  • 自适应网站做推广北京建设工程招标网
  • 外贸网站设计注意事项网上商城官网入口
  • 正规的营销型网站建设公司微官网是网站吗
  • 南京行业门户网站无锡阿里巴巴做网站
  • 河北省和城乡住房建设厅网站wamp wordpress打不开