JavaScript初学者编程题(24)

JavaScript初学者编程题(24)

题目:给你一个 m x n 的整数网格 accounts ,其中 accounts[i][j] 是第 i 位客户在第 j 家银行托管的资产数量。返回最富有客户所拥有的 资产总量 。

HTMl部分
    <input type="text" placeholder="客户数量" id="cus">
    <input type="text" placeholder="银行数量" id="bank">
    <button onclick="createTable()">得到表格</button>
JavaScript部分
//这个方法用来生成可输入数据的表格
function createTable() {
    var cusNum = parseInt(document.getElementById('cus').value);
    var bankNum = parseInt(document.getElementById('bank').value);
    var tempStr = '';
    for(var i = 0; i < cusNum; i++){
        tempStr += '第' + parseInt(i + 1) + '名客户';
        for(var p = 0; p < bankNum; p++){
            //id起名字是n-m,n是哪个客户,m是哪家银行
            tempStr += "<input type=\'text\' placeholder=\'银行" + parseInt(p + 1) + "\' id=\'" + parseInt(i + 1) + "-" + parseInt(p + 1) + "\'>";
        }
        tempStr += '<br>';
    }
    //生成表格,根据输入的客户和银行数量
    tempStr += "<button οnclick=\'calculate()\' value='" + parseInt(cusNum) + '-' + parseInt(bankNum) + "' id='calculateBtn'>开始计算</button>"
    //将表格打印到页面上
    document.body.innerHTML = tempStr;
}

//这个是用来得到表格中的数据,并进行计算
function calculate() {
    //data是一个数组,第一个元素是客户数量,第二个是银行数量
    var getData = document.getElementById('calculateBtn').value.split('-');
    //将客户和银行的数量传过去,让getCusAndPro这个函数去得到网页中输入的数据
    var allCusAndPro = getCusAndPro(getData);
    //这个打印是为了帮助理解
    console.log(allCusAndPro);
    //最大资产总数
    var maxPro = 0;
    //谁的资产最多?
    var whoMax = '';
    for(var i = 0; i < allCusAndPro.length; i++){
        //临时的总资产
        var tempPro = 0;
        for(var p = 0; p < allCusAndPro[i].length; p++){
            tempPro += allCusAndPro[i][p];
        }
        console.log('第' + parseInt(i + 1) + '位客户的资产为' + tempPro);
        if(tempPro > maxPro){
            //如果这个人的总资产大于之前所记录的最高总资产,则替换掉,然后这个人也记录下来
            maxPro = tempPro;
            whoMax = i + 1;
        }
    }
    console.log('最大资产为第' + whoMax + '位客户,共' + maxPro);
}

//这个方法实对每一个客户的资产进行统计的,实际上就是用来得到每一个text中的数据,并将数据处理为二维数组
function getCusAndPro(data) {
    //资产组,是一个二维数组,每个元素里都存一个客户资产,里面每一个元素都是temPro
    var cusAndPro = [];
    //将客户数量遍历一遍
    //data[0]是客户数量
    for(var i = 0; i < data[0]; i++){
        //暂时资产组,是一个数组,里面存的是每个用户在每个银行的资产
        var tempPro = [];
        //for每循环一次,就得到某一个用户在所有银行的资产,以数组的形式存储每个银行中的资产
        //data[1]是银行数量
        for(var b = 0; b < data[1]; b++){
            //从网页的text中得到数据,按照对应的位置存到"暂时资产组"中
            tempPro.push(parseInt(document.getElementById(parseInt(i + 1) + '-' + parseInt(b + 1)).value));
        }
        //将暂时资产组存到资产组里面
        cusAndPro.push(tempPro);
    }
    return cusAndPro;
}

思路:
1、先确定有多少顾客,有多少银行
2、创建二维数组,存储每一位客户在每一个银行中的资产
3、计算每一位客户的资产,如果这个客户的资产大于之前记录的,那就把最大资产和这个客户记录下来,最后输出

输出结果:运行之后的结果
输入用户数量和银行数量,得到表格
输入数据进行计算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值