我已经给出了Set A
我必须找到A的所有子集的Fibonacci和的总和.
Fibonacci(X)
- 是Fibonacci系列的第X个元素
例如,用于A = {1,2,3}
:
Fibonacci(1)+ Fibonacci(2)+ Fibonacci(3)+ Fibonacci(1 + 2)+ Fibonacci(2 + 3)+ Fibonacci(1 + 3)+ Fibonacci(1 + 2 + 3)1 + 1 + 2 + 2 + 5 + 3 + 8 = 22
有没有办法可以在不生成子集的情况下找到总和?
因为我觉得所有的子集的总和容易
即Sum of All Subset - (1+2+3)*(pow(2,length of set-1))
我有一个大小为N的数组,我给出了两种类型的查询
1 LR反转[L,R]
2 L中的所有元素在索引L处查找值.
Example: [1,2,3,4,5]
1 2 4 -> [1,4,3,2,5]
1 4 5 -> [1,4,3,5,2]
2 5 -> 2
Run Code Online (Sandbox Code Playgroud)
Q - 查询
Q <= 10 ^ 5和N <= 10 ^ 5
直接解决方案将是O(Q*N),这将是相当慢的,如何使它更快可以使用分段树?
我正在寻找一种算法,将一个给定的数字表示为(最多)四个方格的总和.
120 = 8 2 + 6 2 + 4 2 + 2 2
6 = 0 2 + 1 2 + 1 2 + 2 2
20 = 4 2 + 2 2 + 0 2 + 0 2
取平方根并重复重复此余数:
while (count != 4) {
root = (int) Math.sqrt(N)
N -= root * root
count++
}
Run Code Online (Sandbox Code Playgroud)
但是当N为23时,即使有解决方案,这也会失败:
3 2 + 3 2 + 2 2 + 1 2
有没有其他算法可以做到这一点?
它总是可能吗?
我必须找出一个等式的积分解,ax+by=c
这个x>=0
和y>=0
和的值(x+y) is minimum
.
我知道如果c%gcd(a,b)}==0
那么它总是可能的.如何找到x和y的值?
我的方法
for(i 0 to 2*c):
x=i
y= (c-a*i)/b
if(y is integer)
ans = min(ans,x+y)
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来做到这一点?有更好的时间复杂性.
我给出的X
尺寸的矩阵Ni*Mi
,其中1<=N<=4 and 1<=M<=4, for all 1 <= i <= X
游戏包括从给定X
矩阵之一中选择任何矩形(子矩阵)并移除该子矩阵.
例如:我们有1个大小的矩阵4x4
.玩家1可以选择大小的子矩阵4x4
(在这种情况下是整个矩阵)并将其删除.或者他们可以选择子矩阵2x2
或1x1
或2x3
或任何有效的子矩阵,并将其从4x4
矩阵中删除,我们在游戏中留下剩余的矩阵.
无法移动的玩家输了.
哪位球员获胜?
两个播放器都以最佳方式播放.
我有这段代码
A = new int[100];
B = new int[100];
C = boolean[100];
for(int i=1;i<=10000000;i++)
{
A = new int[100];
B = new int[100];
C = boolean[100];
// Do Something
// Now i don't need A,B,C Array
}
Run Code Online (Sandbox Code Playgroud)
我使用内存创建数组多少次,我能有效地使用内存吗?我不需要以前的数组,我只需要当前的数组.
我不想使用任何额外的内存来存储以前的数组?我的代码内存有效吗?