摘要:更多的小算法練習,可以查看我的文章。規則使用語言,使用函數讀取,它將是一個字符串,指的是棋盤上點的位置。使用遞歸函數去解決,需要清楚判斷的臨界點,比如和時,只有一種選擇。
雖然都是很簡單的算法,每個都只需5分鐘左右,但寫起來總會遇到不同的小問題,希望大家能跟我一起每天進步一點點。
更多的小算法練習,可以查看我的文章。
Using the JavaScript language, have the function ChessboardTraveling(str) read str which will be a string consisting of the location of a space on a standard 8x8 chess board with no pieces on the board along with another space on the chess board. The structure of str will be the following: "(x y)(a b)" where (x y) represents the position you are currently on with x and y ranging from 1 to 8 and (a b) represents some other space on the chess board with a and b also ranging from 1 to 8 where a > x and b > y. Your program should determine how many ways there are of traveling from (x y) on the board to (a b) moving only up and to the right. For example: if str is (1 1)(2 2) then your program should output 2 because there are only two possible ways to travel from space (1 1) on a chessboard to space (2 2) while making only moves up and to the right.
使用JavaScript語言,使用ChessboardTraveling(str)函數讀取str ,它將是一個字符串,指的是8x8棋盤上點的位置。str的結構如下:“(x y)(a b)”,其中(x y)代表你當前所處的位置x和y的范圍是1到8,而(a b)代表棋盤上的其他點的位置,a和b也在1到8的范圍內,其中a> x和b> y。您的程序應該確定從( xy)在棋盤上移動到(a b)并且移動方式只能是向上和向右移動的情況下,一共有多少條路徑。
例如:如果str是(1 1)(2 2)然后你的程序應該輸出2,因為只有兩種可能的方式從棋盤上的(1 1)點移動到棋盤上的(2 2)點。
function ChessboardTraveling(str) { // code goes here return str; }測試用例
Input:"(1 1)(3 3)" Output:6 Input:"(1 1)(2 2)" Output:2 Input:"(2 2)(4 3)" Output:3my code
function ChessboardTraveling(str) { var strArr = str.match(/([0-9]+s+[0-9]+)/g) var minArr = strArr[0].split(" ") var maxArr = strArr[1].split(" ") var xDiff = maxArr[0] - minArr[0] var yDiff = maxArr[1] - minArr[1] return Steps(xDiff, yDiff); } function Steps(x, y) { if (x < 0 || y < 0) return 0; if (x == 0 && y == 1) return 1; if (x == 1 && y == 0) return 1; return Steps(x - 1, y) + Steps(x, y - 1) } console.log(ChessboardTraveling("(1 1)(3 3)"));other code
暫時沒找到其他合適的解決方式,如果你們有自己的解決方法,請留言~
思路個人思路:
8*8在本題中只做了數值的大小限制,無其他作用
把最小點(如(2 2))作為方格的最左下角,最大點(如 (4 3))作為方格的右上角,構成一個3*2的方格,實質上就是求從方格最左下方到方格最右上方有多少條路徑。
使用遞歸函數去解決,需要清楚判斷的臨界點,比如(x === 0 && y === 1)和(x === 1 && y === 0)時,只有一種選擇。
另一種思路:
使用組合計算
(1 1)和(3,3),需要往上走2步,往右走2步,一共要走4步,C(2,4)= 6
(2 2)和(4,3),需要往上走1步,往右走2步,一共要走3步,C(1,3)= 3
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/96090.html
摘要:更多的小算法練習,可以查看我的文章。規則使用語言,使用函數獲取傳遞的參數并使用以下算法對其進行修改。將字符串中的每個字母替換為字母表后面的字母即變為,變為。然后將這個新字符串,,,,中的每個元音大寫,并最終返回此修改后的字符串。 雖然都是很簡單的算法,每個都只需5分鐘左右,但寫起來總會遇到不同的小問題,希望大家能跟我一起每天進步一點點。更多的小算法練習,可以查看我的文章。 規則 Usi...
摘要:規則使用語言,讓函數獲取傳遞的參數,并以相反的順序返回字符串。測試用例思路方法通過把字符串轉換成數組,并使用數組的反轉數組,然后使用重新拼接成字符串方法向后循環字符串或字符數組以生成新字符串 雖然都是很簡單的算法,每個都只需5分鐘左右,但寫起來總會遇到不同的小問題,希望大家能跟我一起每天進步一點點。更多的小算法練習,可以查看我的文章。 規則 Using the JavaScript l...
摘要:規則使用語言,讓函數獲取傳遞的參數并返回字符串中的最大單詞。忽略字符串中標點符號并假設不會為空。測試用例思路通過過濾字符串,并把字符串根據空格符轉換成字符串數組通過循環把獲取字符串數組中的長度最長的字符串 雖然都是很簡單的算法,每個都只需5分鐘左右,但寫起來總會遇到不同的小問題,希望大家能跟我一起每天進步一點點。更多的小算法練習,可以查看我的文章。 規則 Using the JavaS...
摘要:遇到的坑剛拿到這道題就直接做了這樣的判斷,可是萬一是這個判斷就是錯誤的了。思路二上述算法遍歷了兩次鏈表,還額外申請了一個數組空間,效率不高,不如直接就地反轉鏈表,更改每個節點自身的指針。 2018.10.14 來源:劍指offer 題目:反轉鏈表 輸入一個鏈表,反轉鏈表后,輸出新鏈表的表頭。思路一:把所有鏈表內容都輸入到一個數組,再次遍歷鏈表,得到數組反轉后的值,最后輸出原來的head...
摘要:題目描述代碼思路思路一按行執行二分查找,只要該行的第一個元素小于目標,就對該行二分查找。思路二從數組的左下角開始查找,如果當前值小于目標,就向右,即如果當前值大于目標,就向上,即。【題目描述】 showImg(https://user-gold-cdn.xitu.io/2019/5/22/16addf094e0320ca); 【代碼思路】 思路一:按行執行二分查找,只要該行的第一個元素小于目...
閱讀 2548·2023-04-25 19:47
閱讀 3388·2019-08-29 17:18
閱讀 858·2019-08-29 15:26
閱讀 3364·2019-08-29 14:17
閱讀 1128·2019-08-26 13:49
閱讀 3342·2019-08-26 13:22
閱讀 3027·2019-08-26 10:44
閱讀 2699·2019-08-23 16:51