2019-08-24田忌競馬問題JavaScript版
1446 ワード
問題の説明
2つのグループA、Bは、各グループにn人の同級生がいて、すべての同級生の速度を知っています.2つのグループは競走を行ってポイントを獲得し、毎回1人の同級生、勝者+1、敗者-1、引き分け+0を派遣した.A組に最大何点を積むかを聞く.nはn名の同級生を表し、n個の数はAグループの1人当たりの速度を表し、n個の数はBグループの1人当たりの速度を表す.
問題を解く構想.
まず、A組が勝つかもしれないし、負けるかもしれないし、引き分けかもしれないことを明らかにします.
1.まず2つのデータを並べ替えます.
私たちは小さい頃から大きい順に並べ替える必要があります.sort()メソッドのデフォルトは、配列の要素を文字列に変換し(必要に応じて)、文字符号化の順序でソートします.数値ソートが必要なので、自分で関数を定義する必要があります.
まず、A組が勝つかもしれないし、負けるかもしれないし、引き分けかもしれないことを明らかにします.
1.まず2つのデータを並べ替えます.
私たちは小さい頃から大きい順に並べ替える必要があります.sort()メソッドのデフォルトは、配列の要素を文字列に変換し(必要に応じて)、文字符号化の順序でソートします.数値ソートが必要なので、自分で関数を定義する必要があります.
3.答え:
var score = 0;
function race(n, arr_A, arr_B){
strategy(arr_A, arr_B)
console.log(" :", score);
}
function strategy(arr_A, arr_B){
var n = arr_A.length;
if(n === 0){
return;
}
arr_A.sort(sortNumber);
arr_B.sort(sortNumber);
if(arr_A[n] > arr_B[n]){
arr_A.pop();
arr_B.pop();
score ++;
} else if(arr_A[0] > arr_B[0]){
arr_A.shift();
arr_B.shift();
score ++;
} else {
if(arr_A[0] != arr_B[n]){
score--;
}
arr_A.shift();
arr_B.pop();
}
strategy(arr_A,arr_B);
}
function sortNumber(a,b){
return a - b
}
race(3,[12,34,12],[45,1,90]);