zoukankan      html  css  js  c++  java
  • 士兵算法

    题目描述:

    键盘输入三个数字,以空格分隔

    第一个数字表示有多少个士兵(从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>
  • 相关阅读:
    2019-3-24
    模板
    试试Markdown编辑器
    Codeforces Round #529 (Div. 3) D. Circular Dance
    Codeforces Round #529 (Div. 3) C. Powers Of Two(数学????)
    poj 2566"Bound Found"(尺取法)
    poj 3273"Monthly Expense"(二分搜索+最小化最大值)
    二分搜索
    Codeforces Round #518 (Div. 2) B LCM
    2018.12.21 浪在ACM 集训队第十次测试赛
  • 原文地址:https://www.cnblogs.com/lilililiwang/p/14841252.html
Copyright © 2011-2022 走看看