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;
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序