這裡所提及的峰值問題並不難,下列給出的方法只是乙個例項,大神勿噴
大體上的操作是這樣的,首先找出峰值點,最小值或者最大值,然後根據最小或者最大值判斷其前後的單調性,並且判斷單調性是否相反,進而確定峰值數是否成立
//這裡的單峰只含有最大值的峰點
#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整除即可,能夠整除則不是質數,否則是質數...