判斷乙個數是否只有乙個峰值

2021-06-17 01:04:43 字數 937 閱讀 5878

這裡所提及的峰值問題並不難,下列給出的方法只是乙個例項,大神勿噴

大體上的操作是這樣的,首先找出峰值點,最小值或者最大值,然後根據最小或者最大值判斷其前後的單調性,並且判斷單調性是否相反,進而確定峰值數是否成立

//這裡的單峰只含有最大值的峰點

#include

#include

int main()

}if(num!=0&&num!=length-1)//保證峰值不在首尾的位置

if(num==0||num==length-1)

flag2=1;//必然不是單峰數

if(flag==1)

}for(i=num;i

}if(flag==0)

for(i=num;i}}

if(flag2==0)

printf("所給的數是單峰數\n");

else if(flag2==1)

printf("所給的數不是單峰數\n");

return 0;

}//峰值為最大值或者最小值的時候都可以判斷

#include

#include

int main()

}for (i=0;i}

if(num!=0&&num!=length-1)//保證峰值不在首尾的位置

//假設峰值為最大值單峰是否成立

for(i=0;i

}for(i=num;i

//峰值為最大值單峰不成立 假設峰值為最小值時判斷單峰是否成立

if(flag2==1)

for(i=num2;i}}

if(flag2==0)

printf("所給的數是單峰數\n");

else if(flag2==1)

printf("所給的數不是單峰數\n");

return 0;

}

判斷乙個數是否為素數

判斷乙個數n是否是素數,只需要判斷它是否能被2到n之間的數整除就行了,若不能被整除,則說明是素數。考慮到某數大於n 2時,n不可能被該數整除,故只需遍歷2 n 2即可。更進一步,由合數定理可知,若乙個數是合數,則它的最小質因數必小於等於該數的平方根,由此可得更為高效的 如下 include incl...

判斷乙個數是否是質數

乙個數如果可以進行因數分解,那麼分解的兩個數一定是乙個小於等於sqrt n 乙個大於等於sqrt n 因此遍歷到sqrt n 即可。因為如果sqrt n 左側找不到因數,右側也一定找不到因數。中心思想 遍歷n是否能被2到sqrt n 之間的數整除,如果不能則為質數。import math defis...

判斷乙個數是否是素數

素數釋義 曾稱質數。乙個大於1的正整數,如果除了1和它本身以外,不能被其他正整數整除,就叫素數。如2,3,5,7,11,13,17 public boolean isprime int n for int i 2 i從2開始,一直到小於其自身,依次判斷能否被n整除即可,能夠整除則不是質數,否則是質數...