中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

java遞推完整代碼 遞推問(wèn)題編程

java編程17人編號(hào)為0-16圍成一圈,0號(hào)人開始從1報(bào)數(shù),凡是報(bào)數(shù)為3倍數(shù)的人離開圈子,繼續(xù)到一個(gè),問(wèn)他編號(hào)

這是一個(gè)約瑟夫環(huán)的問(wèn)題

創(chuàng)新互聯(lián)建站憑借專業(yè)的設(shè)計(jì)團(tuán)隊(duì)扎實(shí)的技術(shù)支持、優(yōu)質(zhì)高效的服務(wù)意識(shí)和豐厚的資源優(yōu)勢(shì),提供專業(yè)的網(wǎng)站策劃、成都網(wǎng)站建設(shè)、做網(wǎng)站、網(wǎng)站優(yōu)化、軟件開發(fā)、網(wǎng)站改版等服務(wù),在成都十年的網(wǎng)站建設(shè)設(shè)計(jì)經(jīng)驗(yàn),為成都上1000+中小型企業(yè)策劃設(shè)計(jì)了網(wǎng)站。

解答如下:

依據(jù)提議,可以將題目等價(jià)變換為:“n(n=17)人編號(hào)為0到(n-1)圍成一圈,0號(hào)人開始從0報(bào)數(shù),凡是報(bào)數(shù)為m-1 (m=3)倍數(shù)的人離開圈子,繼續(xù)到一個(gè),問(wèn)他編號(hào)”

一開始的狀態(tài)

0,1,2,3,4,5 ..... (n-2), (n-1) 【n個(gè)人】

第一個(gè)人被踢之后 設(shè)第一個(gè)被踢的人的編號(hào)為k, 則 k = m%n-1 【當(dāng)n=17,m=3時(shí),k=2。也就是說(shuō)編號(hào)為2的人離開了圈子】

這時(shí)候的狀態(tài)

0, .... (k-1), (k+1) ,(k+2)...(n-2),(n-1) 【(n-1)個(gè)人,當(dāng)n=17,m=3時(shí): 0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16】

將這時(shí)候的編號(hào)做轉(zhuǎn)換. 因?yàn)槭菄且粋€(gè)圈子,下一個(gè)開始數(shù)的是(k+1).所以也可以表示為

(k+1),(k+2) ... (n-2),(n-1),0....(k-1) 【(n-1)個(gè)人,當(dāng)n=17,m=3時(shí): 3,4,5,6,7,8,9,10,11,12,13,14,15,16,0,1】

重新編號(hào)。得到:

0,1,2,3,4...(n-3),(n-2)【(n-1)個(gè)人】 這個(gè)時(shí)候 ,這里重新構(gòu)成了一個(gè)約瑟夫環(huán)。也就是說(shuō),這是一個(gè)遞推的關(guān)系。

這里我們進(jìn)行了重新編號(hào)。那么 (n-1)個(gè)人和 n個(gè)人之間的編號(hào)不一樣的。但是兩者之間有一定的關(guān)系,可以沖新編號(hào)推導(dǎo)出老的

公式如下: i' = (i+k)%(n-1) 【比如,當(dāng)n=17,m=3時(shí) . 新的環(huán)編號(hào)是 (n-2),我要求他在老的環(huán)中的編號(hào),那么編號(hào)是 i' = ( (n-2) + k ) % (n-1) = 17%16 = 1,就是老的換種編號(hào)為1的那一個(gè) 】

反過(guò)來(lái)有 :i = (i'+m)%n

有了上面的推斷,可以代碼如下:

int ysf(int n,int m){

if(n==1){

return 0; //當(dāng)環(huán)內(nèi)只有一個(gè)人的時(shí)候,就是他自己

}

return (ysf(n-1,m) + m ) % n ;

}

------------------完整代碼---------------------

public class Test{

public static void main(String[] args){

int a = 17;

int b = 3;

System.out.println(ysf(a,b));

}

static int ysf(int n,int m){

if(n==1){

return 0;

}

return (ysf(n-1,m) +m) % n;

}

}

java 怎樣用遞推法 求出一組數(shù)列中包含的最長(zhǎng)的遞增數(shù) 90, 54, 209, 68, 123, 456, 321, 19, 341 是 5個(gè)

是這個(gè)嗎?

/**[12,127,85,66,27,34,15,344,156,344,29,47,....]

這是某設(shè)備測(cè)量到的工程數(shù)據(jù)。

因工程要求,需要找出最大的5個(gè)值。

一般的想法是對(duì)它排序,輸出前5個(gè)。但當(dāng)數(shù)據(jù)較多時(shí),這樣做很浪費(fèi)時(shí)間。因?yàn)閷?duì)輸出數(shù)據(jù)以外的數(shù)據(jù)進(jìn)行排序并非工程要求,即便是要輸出的5個(gè)數(shù)字,也并不要求按大小順序,只要找到5個(gè)就可以。

以下的代碼采用了另外的思路。考慮如果手里已經(jīng)抓著5個(gè)最大數(shù),再來(lái)一個(gè)數(shù)據(jù)怎么辦呢?讓它和手里的數(shù)據(jù)比,如果比哪個(gè)大,就搶占它的座位,讓那個(gè)被擠出來(lái)的再自己找位子,....

* **/

import java.util.*;

public class B23{

public static ListInteger max5(ListInteger lst){

if(lst.size()=5) return lst;

int a = lst.remove(lst.size() - 1); // 填空

//System.out.println(a);

ListInteger b = max5(lst);

for(int i=0; ib.size(); i++)

{

int t = b.get(i);

if(at)

{

lst.set(i, a); // 填空

a = t;

}

}

return b;

}

public static void main(String[] args){

ListInteger lst = new VectorInteger();

lst.addAll(Arrays.asList(12,127,85,66,27,34,15,344,156,344,29,47));

System.out.println(max5(lst));

}

}

請(qǐng)寫出通過(guò)代碼遞推計(jì)算模式串t的next數(shù)組的JAVA語(yǔ)言方法

import java.util.Scanner;public class Test {public static void main(String[] args) {int num = 5;int[] n = new int[num];Scanner sc = new Scanner(System.in);System.out.println("請(qǐng)輸入"+num+"位會(huì)員的積分");for(int i=0;inum;i++){System.out.print("第"+(i+1)+"位會(huì)員積分:");n[i]=sc.nextInt();}System.out.println("\n序號(hào)\t歷史積分");for(int i=0;in.length;i++){System.out.println(i+1+"\t"+n[i]);}sc.close();}}

java算法分別用遞歸和遞推方法編寫?

//遞歸

private static double wages1(int n)

{

if (n = 0)

{

return 0;

}

else if (n == 1)

{

return 1500*12;

}

else

{

return wages1(n-1) * 1.1;

}

}

//遞推

private static double wages2(int n)

{

if (n = 0)

{

return 0;

}

double wages = 1500 * 12;

for (int i = 1; i n ; i++)

{

wages *= 1.1;

}

return wages;

}

Java:分別用遞推和遞歸方法驗(yàn)證角谷猜想

遞歸是吧,這樣就可以了 #include "stdio.h" static int k=0; void F(int a) { if (a==1) return ; k++; if(a%2==1) a=a*3+1; else a=a/2; printf("%d\n",a); F(a); } void main() { int a=0; printf("input your number\n"); scanf("%d",a); F(a); printf("the function totally calculated %d times",k); }

java一個(gè)遞推程序 設(shè)計(jì) 情高手解答下 順便你們練練手!

int a=0;

int n=0;

String s ;

try{

System.out.print("請(qǐng)輸入一個(gè)整數(shù)n:");

BufferedReader br=

new BufferedReader(new InputStreamReader(System.in));

s=br.readLine();

a=Integer.parseInt(s);

} catch(IOException e){}

以上代碼請(qǐng)放在main函數(shù)里面。

當(dāng)前題目:java遞推完整代碼 遞推問(wèn)題編程
文章URL:http://m.rwnh.cn/article6/hhgjig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、微信小程序外貿(mào)建站、網(wǎng)站導(dǎo)航網(wǎng)站制作、網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
郴州市| 抚州市| 谷城县| 安西县| 昌宁县| 太仆寺旗| 陕西省| 容城县| 宜丰县| 冀州市| 临洮县| 封丘县| 绍兴市| 金平| 皮山县| 增城市| 阿瓦提县| 凤山市| 平昌县| 菏泽市| 久治县| 镇原县| 石河子市| 天水市| 台州市| 独山县| 景宁| 张北县| 凌海市| 浏阳市| 南汇区| 榆树市| 饶平县| 太和县| 全南县| 盐津县| 宁南县| 迭部县| 延寿县| 广河县| 盱眙县|