-
Java: 在n 張撲克牌中找出順子
題目是這樣的:有n張撲克牌,每張牌的取值范圍是:2,3,4,5,6,7,8,9,10,J,Q,K,A。在這n張牌中找出順子(5張及5張以上的連續(xù)的牌),并將這些順子打印出來(lái)。
思路:我的思路其實(shí)很簡(jiǎn)單,首先就是要去掉重復(fù)的牌,因?yàn)橥瑯拥捻樧又阋粋€(gè),顯然JAVA中的Set很適合這個(gè)工作。同時(shí)又需要對(duì)這些牌進(jìn)行排序,毫無(wú)疑問(wèn)就是TreeSet了。然后從小到大遍歷這些牌,并設(shè)置一個(gè)計(jì)數(shù)器count。若發(fā)現(xiàn)連續(xù)的牌,則count++;若發(fā)現(xiàn)不連續(xù)的,分2中情況:若count>4,則找到了一個(gè)順子,存起來(lái);反之則什么都不做。然后count=1,從新開(kāi)始找順子。下面就是代碼:
標(biāo)簽:
Java
上傳時(shí)間:
2013-12-22
上傳用戶(hù):hewenzhi
-
求標(biāo)準(zhǔn)偏差
> function c=myfunction(x)
> [m,n]=size(x)
> t=0
> for i=1:numel(x)
> t=t+x(i)*x(i)
> end
> c=sqrt(t/(m*n-1))
function c=myfunction(x)
[m,n]=size(x)
t=0
for i=1:m
for j=1:n
t=t+x(i,j)*x(i,j)
end
end
c=sqrt(t/(m*n-1
標(biāo)簽:
gt
myfunction
function
numel
上傳時(shí)間:
2014-01-15
上傳用戶(hù):hongmo
-
求標(biāo)準(zhǔn)偏差
> function c=myfunction(x)
> [m,n]=size(x)
> t=0
> for i=1:numel(x)
> t=t+x(i)*x(i)
> end
> c=sqrt(t/(m*n-1))
function c=myfunction(x)
[m,n]=size(x)
t=0
for i=1:m
for j=1:n
t=t+x(i,j)*x(i,j)
end
end
c=sqrt(t/(m*n-1
標(biāo)簽:
gt
myfunction
function
numel
上傳時(shí)間:
2013-12-26
上傳用戶(hù):dreamboy36
-
求標(biāo)準(zhǔn)偏差
> function c=myfunction(x)
> [m,n]=size(x)
> t=0
> for i=1:numel(x)
> t=t+x(i)*x(i)
> end
> c=sqrt(t/(m*n-1))
function c=myfunction(x)
[m,n]=size(x)
t=0
for i=1:m
for j=1:n
t=t+x(i,j)*x(i,j)
end
end
c=sqrt(t/(m*n-1
標(biāo)簽:
gt
myfunction
function
numel
上傳時(shí)間:
2016-06-28
上傳用戶(hù):change0329
-
求標(biāo)準(zhǔn)偏差
> function c=myfunction(x)
> [m,n]=size(x)
> t=0
> for i=1:numel(x)
> t=t+x(i)*x(i)
> end
> c=sqrt(t/(m*n-1))
function c=myfunction(x)
[m,n]=size(x)
t=0
for i=1:m
for j=1:n
t=t+x(i,j)*x(i,j)
end
end
c=sqrt(t/(m*n-1
標(biāo)簽:
gt
myfunction
function
numel
上傳時(shí)間:
2014-09-03
上傳用戶(hù):jjj0202
-
問(wèn)題描述
設(shè)有n種不同面值的硬幣,各硬幣的面值存于數(shù)組T[1:n]中。現(xiàn)要用這些面值的硬幣來(lái)找錢(qián),可以實(shí)用的各種面值的硬幣個(gè)數(shù)不限。當(dāng)只用硬幣面值T[1],T[2],…,T[i]時(shí),可找出錢(qián)數(shù)j的最少硬幣個(gè)數(shù)記為C(i,j)。若只用這些硬幣面值,找不出錢(qián)數(shù)j時(shí),記C(i,j)=∞。
編程任務(wù)
設(shè)計(jì)一個(gè)動(dòng)態(tài)規(guī)劃算法,對(duì)1≤j≤L,計(jì)算出所有的C( n,j )。算法中只允許實(shí)用一個(gè)長(zhǎng)度為L(zhǎng)的數(shù)組。用L和n作為變量來(lái)表示算法的計(jì)算時(shí)間復(fù)雜性
數(shù)據(jù)輸入
由文件input.txt提供輸入數(shù)據(jù)。文件的第1行中有1個(gè)正整數(shù)n(n<=13),表示有n種硬幣可選。接下來(lái)的一行是每種硬幣的面值。由用戶(hù)輸入待找錢(qián)數(shù)j。
結(jié)果輸出
程序運(yùn)行結(jié)束時(shí),將計(jì)算出的所需最少硬幣個(gè)數(shù)輸出到文件output.txt中。
標(biāo)簽:
上傳時(shí)間:
2016-07-28
上傳用戶(hù):yangbo69
-
兩臺(tái)處理機(jī)A 和B處理n個(gè)作業(yè)。設(shè)第i個(gè)作業(yè)交給機(jī)器
A 處理時(shí)需要時(shí)間ai,若由機(jī)器B 來(lái)處理,則需要時(shí)間bi。由于各作
業(yè)的特點(diǎn)和機(jī)器的性能關(guān)系,很可能對(duì)于某些i,有ai >=bi,而對(duì)于
某些j,j!=i,有aj<bj。既不能將一個(gè)作業(yè)分開(kāi)由兩臺(tái)機(jī)器處理,也沒(méi)
有一臺(tái)機(jī)器能同時(shí)處理2 個(gè)作業(yè)。設(shè)計(jì)一個(gè)動(dòng)態(tài)規(guī)劃算法,使得這兩
臺(tái)機(jī)器處理完成這n 個(gè)作業(yè)的時(shí)間最短(從任何一臺(tái)機(jī)器開(kāi)工到最后
一臺(tái)機(jī)器停工的總時(shí)間)。研究一個(gè)實(shí)例:(a1,a2,a3,a4,a5,a6)=
(2,5,7,10,5,2);(b1,b2,b3,b4,b5,b6)=(3,8,4,11,3,4)
標(biāo)簽:
處理機(jī)
機(jī)器
上傳時(shí)間:
2014-01-14
上傳用戶(hù):獨(dú)孤求源
-
Euler函數(shù):
m = p1^r1 * p2^r2 * …… * pn^rn ai >= 1 , 1 <= i <= n
Euler函數(shù):
定義:phi(m) 表示小于等于m并且與m互質(zhì)的正整數(shù)的個(gè)數(shù)。
phi(m) = p1^(r1-1)*(p1-1) * p2^(r2-1)*(p2-1) * …… * pn^(rn-1)*(pn-1)
= m*(1 - 1/p1)*(1 - 1/p2)*……*(1 - 1/pn)
= p1^(r1-1)*p2^(r2-1)* …… * pn^(rn-1)*phi(p1*p2*……*pn)
定理:若(a , m) = 1 則有 a^phi(m) = 1 (mod m) 即a^phi(m) - 1 整出m
在實(shí)際代碼中可以用類(lèi)似素?cái)?shù)篩法求出
for (i = 1 i < MAXN i++)
phi[i] = i
for (i = 2 i < MAXN i++)
if (phi[i] == i)
{
for (j = i j < MAXN j += i)
{
phi[j] /= i
phi[j] *= i - 1
}
}
容斥原理:定義phi(p) 為比p小的與p互素的數(shù)的個(gè)數(shù)
設(shè)n的素因子有p1, p2, p3, … pk
包含p1, p2…的個(gè)數(shù)為n/p1, n/p2…
包含p1*p2, p2*p3…的個(gè)數(shù)為n/(p1*p2)…
phi(n) = n - sigm_[i = 1](n/pi) + sigm_[i!=j](n/(pi*pj)) - …… +- n/(p1*p2……pk)
= n*(1 - 1/p1)*(1 - 1/p2)*……*(1 - 1/pk)
標(biāo)簽:
Euler
lt
phi
函數(shù)
上傳時(shí)間:
2014-01-10
上傳用戶(hù):wkchong
-
//Euler 函數(shù)前n項(xiàng)和
/*
phi(n) 為n的Euler原函數(shù)
if( (n/p) % i == 0 ) phi(n)=phi(n/p)*i
else phi(n)=phi(n/p)*(i-1)
對(duì)于約數(shù):divnum
如果i|pr[j] 那么 divnum[i*pr[j]]=divsum[i]/(e[i]+1)*(e[i]+2) //最小素因子次數(shù)加1
否則 divnum[i*pr[j]]=divnum[i]*divnum[pr[j]] //滿足積性函數(shù)條件
對(duì)于素因子的冪次 e[i]
如果i|pr[j] e[i*pr[j]]=e[i]+1 //最小素因子次數(shù)加1
否則 e[i*pr[j]]=1 //pr[j]為1次
對(duì)于本題:
1. 篩素?cái)?shù)的時(shí)候首先會(huì)判斷i是否是素?cái)?shù)。
根據(jù)定義,當(dāng) x 是素?cái)?shù)時(shí) phi[x] = x-1
因此這里我們可以直接寫(xiě)上 phi[i] = i-1
2. 接著我們會(huì)看prime[j]是否是i的約數(shù)
如果是,那么根據(jù)上述推導(dǎo),我們有:phi[ i * prime[j] ] = phi[i] * prime[j]
否則
phi[ i * prime[j] ] = phi[i] * (prime[j]-1)
(其實(shí)這里prime[j]-1就是phi[prime[j]],利用了歐拉函數(shù)的積性)
經(jīng)過(guò)以上改良,在篩完素?cái)?shù)后,我們就計(jì)算出了phi[]的所有值。
我們求出phi[]的前綴和
*/
標(biāo)簽:
phi
Euler
else
函數(shù)
上傳時(shí)間:
2016-12-31
上傳用戶(hù):gyq
-
int main(int argc,char *argv[])
{
char ch
while(true)
{
printf("*************************************\n")
printf(" 1.Reader Priority\n")
printf(" 2.Writer Priority\n")
printf(" 3.Exit to Windows\n")
printf("*************************************\n")
printf("Enter your choice(1,2,3): ")
do{
ch=(char)_getch()
}while(ch!= 1 &&ch!= 2 &&ch!= 3 )
system("cls")
if(ch== 3 )
return 0
else if(ch== 1 )
ReaderPriority("thread.dat")
else
WriterPriority("thread.dat")
printf("\nPress Any Key to Coutinue:")
_getch()
system("cls")
}
return 0
標(biāo)簽:
char
int
printf
while
上傳時(shí)間:
2017-01-06
上傳用戶(hù):gonuiln