windflysun 2015-12-04 17:20 采纳率: 0%
浏览 1627

OJ 题目 重修之路大神帮帮忙

            程序设计C 实验四 题目四 求组合数(0082)

Time limit(ms): 5000Memory limit(kb): 65535Submission: 9606Accepted: 3218Didn't trying
14级卓越班选拔B
编写一个函数,求从n 个不同的数中取r 个数的所有选择的个数。

Description
输入n 和r 的值; 当用户输入0 0 时,程序结束。

Input
根据公式: C(n,r) = C(n, r-1) * (n - r + 1) / r 输出运算结果 输入数据不满足题意时候,输出"error!"

Output
1
2
3
4
5 3
10 20
50 3
0 0
Sample Input
1
2
3
4
5
6
7
10
error!
19600

我的代码:
#include
int function(int n, int r)
{
if(n<r||r<=0||n<0)
return -1;
if(r == 1)
return n;
return (function(n,r - 1)*(n - r + 1))/r;
}
int main()

{

int n, r;

while(scanf("%d %d",&n, &r)!=EOF)
{
if(n == 0 && r == 0)
return 0;
if(function(n,r) == -1)

        printf("error!\n");

    else
        printf("%d\n",function(n,r));
}
return 0;

}

结果:WrongAnswer

  • 写回答

2条回答 默认 最新

  • ysuwood 2015-12-05 01:05
    关注
     #include <stdio.h>
    int function(int n, int r)
    {
        if(n<r||r<0||n<0)   //r可以取0,修改r<0
            return -1;
        if(r==0)    return 1; //增加
        if(r == 1)  return n;
        return (function(n,r - 1)*(n - r + 1))/r;
    }
    
    int main()
    {
        int n, r;
    
        while(scanf("%d%d",&n, &r)!=EOF)
        {
            if(n == 0 && r == 0)
                return 0;
            if(function(n,r) == -1)
                printf("error!\n");
            else
                printf("%d\n",function(n,r));
        }
        return 0;
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)