4.5 腾讯前端笔试编程题
除了第三题 都不保证一定AC 如果有问题 麻烦告诉我
第一题画画板
while(line = readline()) {
line = line.split(" ");
var n = parseInt(line[0]),
m = parseInt(line[1]),
i = 0,
j = 0,
tmp = '',
l = 0,
k = 0,
arr = [],
counter = 0;
for(i = 0; i < n; i++) {
arr[i] = [];
tmp = readline();
arr[i] = tmp.split("");
}
// \对角线
// 下三角
for(i = 0; i < n; i++) {
l = i;
k = 0;
while(l < n && k < m) {
if(arr[l][k] === 'Y' || arr[l][k] === 'G') {
counter++;
break;
}
l++;
k++;
}
}
// 上三角
for(j = 1; j < m; j++) {
l = 0;
k = j;
while(l < n && k < m) {
if(arr[l][k] === 'Y' || arr[l][k] === 'G') {
counter++;
break;
}
l++;
k++;
}
}
// /对角线
// 下三角
for(i = 1; i < n; i++) {
l = i;
k = m-1;
while(l < n && k >= 0) {
if(arr[l][k] === 'B' || arr[l][k] === 'G') {
counter++;
break;
}
l++;
k--;
}
}
// 上三角
for(j = m-1; j >= 0; j--) {
l = 0;
k = j;
while(l < n && k >= 0) {
if(arr[l][k] === 'B' || arr[l][k] === 'G') {
counter++;
break;
}
l++;
k--;
}
}
print(counter);
}
第二题 巧克力:
爸妈出差N天 总共给了M块巧克力, 保证巧克力可以一直吃到爸妈回来,且后一天吃的巧克力至少是前一天的一半
问:第一天最多可以吃多少?
while(line = readline()) {
line = line.split(" ");
var N = parseInt(line[0]),
M = parseInt(line[1]),
first = 1,
last = M;
while(first + 1 < last) {
var mid = parseInt(first + (last - first)/ 2); // 先确定查找区间的中间位置
if(isSatisify(mid, N, M)) { // 符合要求 继续二分
first = mid;
} else { // 小于中间位置,向右半区间
last = mid - 1;
}
}
if(isSatisify(first + 1, N, M)) {
print(first + 1);
} else {
print(first);
}
}
function isSatisify(midkey, n, m) { // 判断midkey是否符合题目要求
var res = midkey, i = 1;
for(i = 1; i < n; i++) { // 表示天数,故i从1开始,因为已经存入第一个midkey,故只需要n-1天
if(midkey == 1) {
res += n - i; // 后面有多少天就需要多少巧克力,因为每天至少一块巧克力
break;
} else {
res += parseInt((midkey+1)/2);
midkey = parseInt((midkey+1)/2)
}
}
return res <= m;
}
第三题:抽数字
while(n = parseInt(readline())) {
var line = readline();
line = line.split(" ");
for(var i = 0; i < n; i++) {
line[i] = parseInt(line[i]);
}
line.sort(compare);
var tmp1 = 0;
for(i = 0; i < n; i = i+2) {
tmp1 += arr[i]
}
var tmp2 = 0;
for(i = 1; i < n; i = i+2) {
tmp2 += arr[i]
}
print(tmp1-tmp2)
}
function compare(val1, val2) {
return val2-val1;
}
查看22道真题和解析
