士兵算法
题目描述:
键盘输入三个数字,以空格分隔
第一个数字表示有多少个士兵(从1开始编号)
第二个数字表示接下来会输入几组数字
第三个数字表示需要输出几号士兵最后的编号
接下来输入的两个一组的数字,两个数字以空格分开,表示需要交换位置的两个士兵的编号
例如: 2 8
表示 2号和8号交换位置,3号和7号交换位置,4号和6号交换位置,5号位置不变
如果有多组输入,进行同样操作,
最后输出第一次的第三个数字的士兵最后所处的位置
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>士兵算法</title> <script> let str1 = prompt("请输入三个数字(以空格分隔):"); let arr1 = str1.split(" "); let resultIndex = arr1[2]-1; //console.log(arr); let num = []; for(let i=0; i<arr1[0]; i++) { num.push((i+1)) } let count = arr1[1]; let index1; let index2; for(let i=0; i<count; i++) { let str = prompt("请输入两个数字(以空格分隔):"); let arr = str.split(" "); index1 = arr[0]-1; index2 = arr[1]-1; let resArr = change(num); //console.log(resArr); } // let str2 = "1 5"; // let num2Arr = str2.split(" "); // let str3 = "2 9"; // let num3Arr = str3.split(" "); function change(arr) { console.log(arr); if(index1 >= index2) { console.log(arr[resultIndex]); return arr; } let temp = arr[index1]; arr[index1] = arr[index2]; arr[index2] = temp; change(arr, index1++, index2--); } //let arr3 = change(arr2, 2-1, 4-1); //let arr4 = change(arr3, 1-1, 4-1); </script> </head> <body> </body> </html>