以下兩段**均為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 利用 ...