小编use*_*943的帖子

分割数组的方法数量

我想找到将数组分成3个连续部分的方法的数量,使得三个部分的总和相等

-10^9 <= A[i] <= 10^9
Run Code Online (Sandbox Code Playgroud)

我的方法:输入和检查基础案例:

for(int i=0;i<n;i++){
     a[i]= in.nextLong();
     sum+=a[i];
}
if(sum%3!=0)System.out.println("0");
Run Code Online (Sandbox Code Playgroud)

如果答案不在上面那么形成前缀和后缀总和.

for(int i=1;i<=n-2;i++){
        xx+=a[i-1];
        if(xx==sum/3){

            dp[i]=1;
        }        
    }
Run Code Online (Sandbox Code Playgroud)

后缀和更新二进制索引树:

for(int i=n ;i>=3;i--){
         xx+=a[i-1];
         if(xx==sum/3){
             update(i, 1, suffix);
         }
    }
Run Code Online (Sandbox Code Playgroud)

现在简单地循环数组以找到Total Ways:int ans = 0;

for(int i=1;i<=n-2;i++){

        if(dp[i]==1)
        {

            ans+=  (query(n, suffix) - query(i+1, suffix)); 
         // Checking For the Sum/3 in array where index>i+1
        }
}
Run Code Online (Sandbox Code Playgroud)

我为上述方法得到了错误的答案

我不知道我在哪里犯了错误请帮助纠正我的错误.

更新和查询功能:

public static void update(int i , int value , int[] arr){

       while(i<arr.length){
           arr[i]+=value;

           i+=i&-i;

       }
}
public static …
Run Code Online (Sandbox Code Playgroud)

java algorithm

8
推荐指数
1
解决办法
652
查看次数

查找表中的路径数

Tere是一张大小为R×C的表格; R行和C列.该表的子矩形被阻止.我们只能向右或向下移动.在没有通过被阻挡的子矩形的情况下,从左上角单元格到右下角单元格的路径数是多少?

我的方法: 计算行r2 C = {0到c1-1}的路径和行r1的路径C = {c2 + 1,C}

r1,c1,r2和c2,左上角的单元格和下面的单元格 - 被阻止的矩形的正确单元格.

Cal Calculate C(n,k)
Run Code Online (Sandbox Code Playgroud)

我的代码:

int R = in.nextInt()-1;
int C = in.nextInt()-1;
int r1 = in.nextInt()-1;
int c1= in.nextInt()-1;
int r2 = in.nextInt()-1;
int c2 = in.nextInt()-1;
long ans=0;
long temp=0;
temp+= Cal(R-r2+C-c1,C-c1);
for(int i=0;i<c1 && r2!=R;i++){
    ans+=Cal(i+r2,r2)*(Cal(R-r2+C-i,C-i)-temp);
}
temp=0;

temp+=Cal(r1+c2,r1);

for(int i=c2+1;i<=C;i++){
ans+= (Cal(i+r1,r1)-temp)*Cal(C-i+R-r1,C-i);

}
System.out.println(ans);
Run Code Online (Sandbox Code Playgroud)

我没有得到上述算法的正确答案.如果我做错了,请帮助我.

Sample input:
8 12
5 5 8 8    ANS:7008
Run Code Online (Sandbox Code Playgroud)

algorithm combinations

5
推荐指数
1
解决办法
115
查看次数

何时使用 DFS 和 BFS

这是 Facebook 黑客杯中的图搜索问题。问题链接

问题描述:MXN 矩阵我们必须找到从源到目标的最小距离。在我们采取的每一步中,都有改变方向的激光和也发射激光。

问题:

我使用了在社论中描述的相同方法但是我使用了DFS 而不是 BFS并且我对某些情况的答案有误。

DFS 如何发挥作用 为什么 DFS 在 BFS 工作时没有在这方面工作。

代码链接

tHanks
Run Code Online (Sandbox Code Playgroud)

社论

java algorithm graph

1
推荐指数
1
解决办法
1800
查看次数

标签 统计

algorithm ×3

java ×2

combinations ×1

graph ×1