好程式設計師web前端分享javascript列舉演算法
好程式設計師 web 前端分享 javascript 列舉演算法 , 題目:在 1 , 2 , 3 , 4 , 5 五個數中,我們隨機選取 3 個數。問有多少種取法?並且把每種取出數的方法列舉出來。
乍看這道題,其實感覺沒什麼難度。三個 for 迴圈不就解決問題了。
程式碼:
var arr=[1,2,3,4,5];
for(var i=0;i<5;i++){
for ( var j=0;j<5;j++ ) {
for(var k=0;k<5;k++)
if(arr[i]!=arr[j]!=arr[j]){
console.log(arr[i]+''+arr[j]+arr[k]);
}
}
}
這樣子就可以列印出來每種遍歷的情況。是不是看起來很簡單。但是,如果我們需要解決這一類問題的話,此解法就感覺不足了。比如說:我們在十個數取出八個數求結果,一百個數取出八十個數求出結果。那麼,我們分別要迴圈 8 次和 80 次,那麼這肯定是不行的。那麼,怎麼辦呢?? 其實採用列舉就可以了。
程式碼:
var number=[1,2,3,4,5]; // 我們操作的陣列
var state=[]; // 記錄狀態的陣列
var shu=[]; // 列舉出來答案得到的陣列。
function dfs(step,n){ //n ,代表取幾個數出來。
var flag=true;
if(step==n){ // 判斷條件,判斷是否取出來了個數。
console.log(state.join(""));
shu.push(state.join("")); // 把取出來的書方法陣列中
return 0; // 結束迴圈
}
for(var i=0;i<number.length;i++){ // 迴圈資料
for(var j=0;j<state.length;j++){ // 判斷時候取出來重複的數。
if(state[j]==number[i]){
flag=false;
break;
}
}
if(flag){
state.push(number[i]); // 儲存當前環境
dfs(step+1,n);
state.pop(number[i]); // 回退到上一層的環境
}
flag=true;
}
}
dfs(0,4);
console.log(shu.length);
其實最重要的程式碼就是上面
if(flag){
state.push(number[i]); // 儲存當前環境
dfs(step+1,n);
state.pop(number[i]); // 回退到上一層的環境
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2641191/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師web前端分享前端 javascript 練習題程式設計師Web前端JavaScript
- 好程式設計師web前端教程分享JavaScript面試題程式設計師Web前端JavaScript面試題
- 好程式設計師web前端分享javascript關聯陣列用法總結程式設計師Web前端JavaScript陣列
- 好程式設計師web前端分享前端javascript練習題三程式設計師Web前端JavaScript
- 好程式設計師web前端分享前端javascript練習題一程式設計師Web前端JavaScript
- 好程式設計師web前端培訓分享JavaScript框架J程式設計師Web前端JavaScript框架
- 好程式設計師web前端教程分享javascript 練習題程式設計師Web前端JavaScript
- 好程式設計師web前端教程分享JavaScript簡寫方法程式設計師Web前端JavaScript
- 好程式設計師web前端培訓分享學習JavaScript程式設計師Web前端JavaScript
- 好程式設計師Web前端教程分享JavaScript開發技巧程式設計師Web前端JavaScript
- 好程式設計師web前端教程分享前端javascript練習題二程式設計師Web前端JavaScript
- 好程式設計師web前端教程分享前端javascript練習題三程式設計師Web前端JavaScript
- 好程式設計師web前端教程分享前端 javascript 練習題二程式設計師Web前端JavaScript
- 好程式設計師Web前端分享前端CSS篇程式設計師Web前端CSS
- 好程式設計師web前端培訓分享JavaScript學習筆陣列的排序程式設計師Web前端JavaScript陣列排序
- 好程式設計師web前端培訓分享JavaScript學習筆記之陣列程式設計師Web前端JavaScript筆記陣列
- 好程式設計師web前端培訓分享JavaScript學習指南程式設計師Web前端JavaScript
- 好程式設計師web前端分享JavaScript中常見的反模式程式設計師Web前端JavaScript模式
- 好程式設計師web前端教程分享JavaScript Math(算數)物件程式設計師Web前端JavaScript物件
- 好程式設計師web前端之JavaScript陣列去重方法程式設計師Web前端JavaScript陣列
- 好程式設計師web前端教程分享前端javascript練習題之promise程式設計師Web前端JavaScriptPromise
- 好程式設計師web前端分享應該怎樣學好web前端?程式設計師Web前端
- 好程式設計師web前端分享web前端入門知識程式設計師Web前端
- 好程式設計師web前端培訓分享九個JavaScript小技巧程式設計師Web前端JavaScript
- 好程式設計師web前端培訓分享JavaScript基礎語法程式設計師Web前端JavaScript
- 好程式設計師web前端培訓分享JavaScript相關知識程式設計師Web前端JavaScript
- 好程式設計師web前端教程分享JavaScript的執行機制!程式設計師Web前端JavaScript
- 好程式設計師Web前端分享無法忽視的JavaScript技巧程式設計師Web前端JavaScript
- 好程式設計師web前端培訓分享Javascript中原型屬性程式設計師Web前端JavaScript原型
- 好程式設計師web前端教程分享前端javascript練習題Ajax封裝程式設計師Web前端JavaScript封裝
- 好程式設計師分享Web前端開發工具程式設計師Web前端
- 好程式設計師web前端教程分享CSS技巧!程式設計師Web前端CSS
- 好程式設計師web前端分享Cookie知識程式設計師Web前端Cookie
- 好程式設計師web前端教程分享web前端基礎知識程式設計師Web前端
- 好程式設計師web前端分享在HTML中使用JavaScript例項程式碼程式設計師Web前端HTMLJavaScript
- 好程式設計師web前端培訓分享JavaScript學習筆記Promise程式設計師Web前端JavaScript筆記Promise
- 好程式設計師web前端培訓分享JavaScript學習筆記SASS程式設計師Web前端JavaScript筆記
- 好程式設計師web前端培訓分享JavaScript學習筆記cookie程式設計師Web前端JavaScript筆記Cookie