新手求助
为什么就是算不出正确数值??问题
从起点(0,0)走到终点(n,n)的最短路径数是C(2n,n),现在小兔又想如果不穿越对角线(但可接触对角线上的格点),这样的路径数有多少?
Input
每次输入一个数n(1<=n<=35),当n等于-1时结束输入。
Output
对于每个输入数据输出路径数,具体格式看Sample。
Sample Input
1
3
12
-1
Sample Output
1 1 2
2 3 10
3 12 416024
我的代码如下
#include<stdio.h>
int main()
{
int count=1,i,j,num,sum,sum1,sum2,t;
while(scanf("%d",&num)!=EOF)
{
count++;
int sum1=1,sum2=1;
for(i=num*2;i>num;i--)
{
sum1*=i;
}
for(j=num;j>0;j--)
{
sum2*=j;
}
sum=sum1/sum2;
printf("%d %d %d\n",count-1,num,sum);
}
return 0;
} C++代码:#include <iostream>
using namespace std;
int func(int n){
if (n <= 1){return 1;}
int res = 0;
for (int i = 0; i < n; i++){
res += func(i) * func(n - 1 - i);
}
return res;
}
int f(int x){
return func(x) << 1;
}
int main (){
int i = 0;
while(true){
i++;
int n;
cin >> n;
if(n == -1){
break;
}
cout << i << ' ' << n << ' ' << f (n) << endl;
}
return 0;
}C代码:#include <stdio.h>
int func(int n){
if (n <= 1){return 1;}
int res = 0;
for (int i = 0; i < n; i++){
res += func(i) * func(n - 1 - i);
}
return res;
}
int f(int x){
return func(x) << 1;
}
int main(){
int i = 0;
while(1){
i++;
int n;
scanf("%d", &n);
if(n == -1){
break;
}
printf("%d %d %d\n", i, n, f(n));
}
return 0;
}Python3代码:def func(n: int) -> int:
if n <= 1: return 1
res = 0
for i in range(n):
res += func(i)*func(n-1-i)
return res
f = lambda x: func(x)<<1
i = 0
while True:
i += 1
n = int(input())
if n == -1:
break
print(f"{i} {n} {f(n)}")输出结果:1
1 1 2
3
2 3 10
12
3 12 416024
-1 朋友,如果我的解答是你想要的请给最佳解答,谢谢
页:
[1]