PAT考試乙級1030 C語言實現 重點題目

2021-08-10 15:36:31 字數 1193 閱讀 6211

以下兩段**均為c++編譯器

#include

#include

using

namespace

std;

int main()

sort(a,a+n);//排序的起始位址到結束位址

for(i=0;i//a[i]作為最小值

for(j=n-1;j>0;j--)}}

printf("%d\n",c+1);

return

0;}

這個答案提交後會有乙個測試點執行超時,因為會做一些重複的迴圈,需要將**進行改進。

#include

#include

using

namespace

std;

int main()

sort(a,a+n);//排序的起始位址到結束位址

for(i=0;i//a[i]作為最小值

for(int j=i+c;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

#include

int cmp(const

void *a,const

void *b)

int main()

qsort(a,n,sizeof(double),cmp);//排序的起始位址到結束位址

for(i=0;i//a[i]作為最小值

for(int j=i+c;j//j置為要滿足可以更新數列長度的值,減少迴圈次數

if(a[j]>a[i]*p) //如果不滿足條件了,則將下乙個元素最為最小值

break;

if(j-i>c) //如果此次的長度大於上一次,更新數列長度

c=j-i;}}

printf("%d\n",c+1);//由於陣列從0開始

return

0;}

本題參考

PAT乙級考試 1030 完美數列

題目 思路觀察題目,假如我們確定了乙個數列的最小值m,則在給出的數字中找出不大於mp的最大數字m,再加上所有位於m和m中間的數字,即是這個最小值m對應的元素最多的完美數列 根據這個邏輯,有 1 錄入資料,注意這裡雖然給出的數字和p都在int的範圍內,但是m p就不一定在了,所以我們用long lon...

PAT考試乙級1002 C語言實現

include include include using namespace std void num to string int n int main int sum 0,i 0,len 0 gets n len strlen n for i 0 i 0 int num 0,count 0 st...

PAT考試乙級1009 C語言實現

include include int main else printf s s return 0 c 版本 include include include using namespace std int main cout st.top st.pop while st.empty 總結 1 利用 ...