牛客网试题

本文探讨了Java编程中的基础知识,包括构造器的使用、switch语句、对象创建、方法声明、数组操作、静态方法、类与对象的关系、递归函数以及字符串对象的比较。通过实例解析了Java代码的执行流程和逻辑,帮助读者深入理解Java编程的核心概念。

1、输出结果是: BaseBase

class Base {
Base() {
System.out.print(“Base”);
}
}
public class Alpha extends Base {
public static void main( String[] args ) {
new Alpha();
//调用父类无参的构造方法
new Base();
}
}
Alpha继承父类Base ,new Alpha,会先执行一次Base里的代码块,new Base()会再次执行一次输出。

2、输出10

下面的方法,当输入为2的时候返回值是多少?
public static int getValue(int i) {
int result = 0;
switch (i) {
case 1:
result = result + i;
case 2:
result = result + i * 2;
case 3:
result = result + i * 3;
}
return result;
输入2的时候,进入case 2 result为4,但是没有break,会继续执行下去,case :3 ,result 为4+6=10、

3、constructor在一个对象被new时执行 (构造方法为 Scanner sc =new Scanner() )

(5分/5分)下列说法正确的有
1.
class中的constructor不可省略
2.
constructor必须与class同名,但方法不能与class同名
3.

### 牛客网中与贪心算法相关的试题 #### BM95 分糖果问题 此题的核心在于通过排序后,选择局部最优解来实现全局最优。具体做法是先对数组进行升序排序,然后从右向左依次选取第 \(3n-2\)、\(3n-4\) 等位置的元素[^1]。代码如下: ```cpp #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int n = 0; cin >> n; vector<int> v(3 * n); for (int j = 0; j < 3 * n; j++) { cin >> v[j]; } sort(v.begin(), v.end()); long long num = 0; int beg = 3 * n - 2; while (n--) { num += v[beg]; beg -= 2; } cout << num << endl; return 0; } ``` #### BM96 主持人调度(二) 该题同样使用了贪心算法的思想,目的是在满足题目条件的前提下,尽量选取局部最优解以实现全局最优解[^1]。 #### 腾讯笔试题:贪吃的小Q 此题要求计算小Q第一天最多能吃多少块巧克力,同时保证每天吃的巧克力数量不少于前一天的一半。解题思路采用二分查找的方法[^3]。以下是Python代码实现: ```python # -*- coding:utf-8 -*- n, m = [int(i) for i in input().split()] def my_sum(s): total_sum = 0 for i in range(n): total_sum += s s = (s + 1) // 2 return total_sum low, high = 1, m while low <= high: mid = (low + high) // 2 if my_sum(mid) == m: print(mid) break elif my_sum(mid) < m: low = mid + 1 else: high = mid - 1 if low > high: print(low - 1) ``` #### To Fill or Not to Fill【区间贪心】 此题涉及加油策略的选择,目标是最小化总花费。通过遍历加油站并计算所需油量和费用,可以得出最优解[^4]。部分代码如下: ```cpp for (int i = 0; i < n; i++) { tmp = (a[i].di + max < d ? max : d - a[i].di); cnt = 0; for (int j = a[i].di; j < a[i].di + tmp; j++) { if (flag[j] == 0) { flag[j] = 1; cnt++; } } sum += cnt / (davg * 1.0) * a[i].pi; } ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值