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、计算每一位客户的资产,如果这个客户的资产大于之前记录的,那就把最大资产和这个客户记录下来,最后输出
输出结果: