面试问题:
在O(log n)中计算x ^ y
有不同的答案,如"使用印度力量算法"或
double power(double x, int y)
{
if(y == 0) return 1;
double d = power(x, y/2);
if(y%2 == 0) return d*d;
else return x*d*d;
}
Run Code Online (Sandbox Code Playgroud)
这是一个正确的答案吗?
有没有更好的方法来编写这个问题的代码?
我想在我的应用程序中有一个选项来改变我的应用程序语言(只是应用程序语言而不是整个系统),请你给我一些提示?
提前致谢,
我知道本地化!
问题是 :
通过选择元素来找到正整数数组中可能的最大总和,使得没有两个元素彼此相邻.
有一个这样的答案:但这个问题的最佳答案是什么
让我们用"t"表示数组并从0开始索引.设f是一个函数,使得f(k)= [0..k]子阵列中的最大和与问题的条件.现在使用动态编程:
f(0) = t[0]
f(1) = max{ t[0], t[1] }
f(k) = max{ f(k-2) + t[k], f(k-1) } if k >= 2
If the array has n elements we need f(n-1).
Run Code Online (Sandbox Code Playgroud)
提前致谢.
我有这个实现,这个程序的结果是100,但正确答案是103.有人知道这个实现有什么问题,或者是否有更好的方法来查找数组中最大的连续整数和?
提前致谢.
#include <stdio.h>
int main(void) {
int a[] = { -3, 100, -4, -2, 9, -63, -200, 55 };
int max_sum, temp_sum, i, n = 12, t;
temp_sum = max_sum = a[0];
for (i = 1; i < n; i++) {
if (a[i] > 0)
temp_sum += a[i];
else {
t = 0;
while (a[i] < 0 && i < n) {
t += a[i];
i++;
}
if (temp_sum + t > 0) {
temp_sum = temp_sum + t …Run Code Online (Sandbox Code Playgroud)