Redian新闻
>
有没有MM用过kiss my face的这个果酸呀?
avatar
有没有MM用过kiss my face的这个果酸呀?# Fashion - 美丽时尚
a*3
1
https://www.hackerrank.com/challenges/walking-on-grids
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Solution {

static int count(int n){
int[][] ar=new int[n][n];
ar[0][0]=1;
for(int i=0;ifor(int j=0;j<=i;j++){
if(i==0 && j==0)
continue;
int left=0, up=0;
if(i-1>=0 && i!=j)
up=ar[i-1][j];
if(j-1>=0)
left=ar[i][j-1];
ar[i][j]=up+left;
}

}

return ar[n-1][n-1];

}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
System.out.println((count(n)*2)%10007);
}
}
一开始recursive时间超时, 改用dp。 当n=4和10的时候都对了,但是提交test case
其他全错。跪了。求指导。
另外求战友一起做hackerrank。
avatar
w*o
3
1要考虑n等于1的情况
2如果dp数组稍大一点,就不用考虑边界条件
3 ar[i][j]=up+left; 也要对10007取余
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
if(n == 1) {
System.out.println(1);
return;
}
int[][] dp = new int[n+1][n+1];
dp[1][1] = 1;
for(int i = 2; i <= n; i++) {
for(int j = 1; j <= i; j++) {
dp[i][j] = (dp[i-1][j] + dp[i][j-1]) % 10007;
}
}
System.out.println((dp[n][n] * 2) % 10007);
}
avatar
m*u
4
我正在用着,感觉很不错,很滋润,吸收也好,味也是纯正的桃子味,总之我给他高评
价,指的是性价比
avatar
d*x
5
那上面能加好友吗?
我有个同名id

【在 a******3 的大作中提到】
: https://www.hackerrank.com/challenges/walking-on-grids
: import java.io.*;
: import java.util.*;
: import java.text.*;
: import java.math.*;
: import java.util.regex.*;
: public class Solution {
:
: static int count(int n){
: int[][] ar=new int[n][n];

avatar
a*3
6

对。。我以为只是最后matrix[n-1][n-1]要mod 10007。后来在i,j都mod了,就过了。
谢谢

【在 w***o 的大作中提到】
: 1要考虑n等于1的情况
: 2如果dp数组稍大一点,就不用考虑边界条件
: 3 ar[i][j]=up+left; 也要对10007取余
: public static void main(String[] args) {
: Scanner in = new Scanner(System.in);
: int n = in.nextInt();
: if(n == 1) {
: System.out.println(1);
: return;
: }

avatar
a*3
7

好像没有好友功能。。

【在 d**********x 的大作中提到】
: 那上面能加好友吗?
: 我有个同名id

avatar
s*l
8
N*N的grid,对角线上半部分或者下半部分的不同路径(包含对角线路径)数目是
Catalan number,可以直接用DP求解。C(i) = C(i-1) * (2*i - 1) * 2 / (i+1). 初
始值C(0) = 1,C(1) = 1.
如果不包含对角线路径,且考虑对角线上下两部分的不同路径,求2*C(N-1)。
avatar
j*7
9
I passed all test cases.
public static void main(String[] args) {

Scanner in=new Scanner(System.in);
int N=in.nextInt();
int [][] A=new int[N][N];
A[N-1][N-1]=1;
for(int i=N-1;i>0;i--)
{
for(int j=i;j>=0;j--)
{
if(j-1>=0)
{
A[i][j-1]+=A[i][j]%10007;
A[i][j-1]=A[i][j-1]%10007;
}
if(i!=j)
A[i-1][j]+=A[i][j]%10007;
}
}
System.out.println(A[0][0]*2%10007);


}
avatar
m*1
10
working code C++
long long solution(int n) {

if(n==2) return 1;
if(n==3) return 2;
long long c[n+1];
c[2] = 1;
c[3] = 2;
for(int i=4;i<=n;i++) {
long long temp = 0;
for(int j=i-2;j>=2;j--) {
temp += c[i-j]*c[j];
temp %= 10007;
}
c[i] = 2*c[i-1]+temp;
c[i] %=10007;
}
return c[n];
}
int main() {
/* Enter your code here. Read input from STDIN. Print output to STDOUT *
/
int n;
cin >> n;
while(n==1){;}
cout<<2*solution(n)%10007<return 0;
}
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。