PAT考试乙级1030(C语言实现)重点题目
来源:互联网 发布:淘宝必买清单编辑器 编辑:程序博客网 时间:2024/06/05 15:09
以下两段代码均为C++编译器
#include<stdio.h>#include<algorithm>using namespace std;int main(){ int N,i,j,c=0; double p,a[100001]; scanf("%d %lf",&N,&p); for(i=0;i<N;i++){ scanf("%lf",&a[i]); } sort(a,a+N);//排序的起始地址到结束地址 for(i=0;i<N;i++){//a[i]作为最小值 for(j=N-1;j>0;j--){ if(a[j]<=a[i]*p){//a[j]作为最大值 if(c<j-i) c=j-i;//更新长度 else break; } } } printf("%d\n",c+1); return 0;}
这个答案提交后会有一个测试点运行超时,因为会做一些重复的循环,需要将代码进行改进。
#include<stdio.h>#include<algorithm>using namespace std;int main(){ int N,i,j,c=0; double p,a[100001]; scanf("%d %lf",&N,&p); for(i=0;i<N;i++){ scanf("%lf",&a[i]); } sort(a,a+N);//排序的起始地址到结束地址 for(i=0;i<N;i++){//a[i]作为最小值 for(int j=i+c;j<N;j++){ //j置为要满足可以更新数列长度的值,减少循环次数 if(a[j]>a[i]*p) //如果不满足条件了,则将下一个元素最为最小值 break; if(j-i>c) //如果此次的长度大于上一次,更新数列长度 c=j-i; } } printf("%d\n",c+1);//由于数组从0开始 return 0;}
以下是C编译器的代码:
#include<stdio.h>#include<stdlib.h>int cmp(const void *a,const void *b){ return *((double *)a)-*((double *)b); }int main(){ int N,i,j,c=0; double p,a[100001]; scanf("%d %lf",&N,&p); for(i=0;i<N;i++){ scanf("%lf",&a[i]); } qsort(a,N,sizeof(double),cmp);//排序的起始地址到结束地址 for(i=0;i<N;i++){//a[i]作为最小值 for(int j=i+c;j<N;j++){ //j置为要满足可以更新数列长度的值,减少循环次数 if(a[j]>a[i]*p) //如果不满足条件了,则将下一个元素最为最小值 break; if(j-i>c) //如果此次的长度大于上一次,更新数列长度 c=j-i; } } printf("%d\n",c+1);//由于数组从0开始 return 0;}
本题参考http://blog.csdn.net/wanmeiwushang/article/details/51456488
总结:
1、由于a数组可能会超出int范围所以使用double。
2、由于 c中没有sort函数,c中要是有qsort()函数,需要写一个方法,具体内容参考1015.
阅读全文
0 0
- PAT考试乙级1030(C语言实现)重点题目
- PAT考试乙级1015(C语言实现) 重点题目
- PAT考试乙级1019(C语言实现) 重点题目
- PAT考试乙级1024(C语言实现)重点题目
- PAT考试乙级1028(C语言实现)重点题目
- PAT考试乙级1031(C语言实现)重点题目
- PAT考试乙级1034(C语言实现)重点题目
- PAT考试乙级1033(C语言实现)重点题目 部分正确(已解决)
- PAT考试乙级1035(C语言实现)重点题目(排序)
- PAT考试乙级1045(C语言实现)重点题目(思路)
- PAT考试乙级1048(C语言实现)重点题目(思路、用到了memset)
- PAT考试乙级1050(C语言实现) (重点题目)(memset以及思路)
- PAT考试乙级1050(C语言实现) (重点题目)(关于保留小数的坑)
- PAT考试乙级1054(C语言实现) (重点题目)(思路)
- PAT考试乙级1050(C语言实现) (重点题目)(按格式读取,使用容器vector)
- PAT考试乙级1055(C++语言实现) (重点题目)(思路)
- PAT考试乙级1001(C语言实现)
- PAT考试乙级1002(C语言实现)
- 支持向量机(一)
- DrawerLayout 侧拉
- gson序列化的时候,排除字段工具类
- POJ-1426 由0|1组成10进制数整除问题
- leetcode 101 Symmetric Tree
- PAT考试乙级1030(C语言实现)重点题目
- 断点续传简单实现
- 浏览器同源策略,跨域(跨源)
- ACM准备之路(蓝桥杯8)数字图形
- Linux中Web环境memcached和redis安装(FOR PHP)
- CNN网络的维度确定(20)---《深度学习》
- 去除<!--[if gte mso 9]......<![endif]-->字符串
- 快速搭建 webpack + react 环境
- os使用