c语言-OJ 题目 重修之路大神帮帮忙

问题描述

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("%dn",function(n,r));
}
return 0;

}

结果:WrongAnswer

解决方案

 #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("%dn",function(n,r));
    }
    return 0;
}

解决方案二:

输入 0 0 结束程序, 为什么还要加!=EOF呢?

时间: 2024-10-30 22:32:08

c语言-OJ 题目 重修之路大神帮帮忙的相关文章

c语言-pat 部分A+B 求大神帮帮忙,初学C语言

问题描述 pat 部分A+B 求大神帮帮忙,初学C语言 找不出错误... 正整数A的"DA(为1位整数)部分"定义为由A中所有DA组成的新整数PA.例如:给定A = 3862767,DA = 6,则A的"6部分"PA是66,因为A中有2个6. 现给定A.DA.B.DB,请编写程序计算PA + PB. 输入格式: 输入在一行中依次给出A.DA.B.DB,中间以空格分隔,其中0 < A, B < 1010. 输出格式: 在一行中输出PA + PB的值. 输入

编程c语言-c新手问题,求大神帮帮忙(?_?)

问题描述 c新手问题,求大神帮帮忙(?_?) int?read_line(char?str[]?int?n){int?chi=0;while((ch=getchar())?!=?'n')if(i<n)str[i++]=ch;str[i]=''; /*terminates?string*/return?i; ????/*number?of?characters?stored*/}这个函数中当需要读入的字符比较多时(超过n),结束时的str[i]=''不合理的话,这条语句该怎么修改啊? 解决方案 没

strcpy-c语言比较细致的问题.求大神帮我解答.

问题描述 c语言比较细致的问题.求大神帮我解答. #include#includeint main(){ int sum=0; char array[20][200]={""""}; int m=0n; float k=0; int k1=0i; scanf(""%d""&n); for(i=0;i { scanf(""%d""&sum); scanf("&qu

c语言-C语言学籍管理系统,我想添加专业和家庭地址的代码,求各位大神帮帮忙!小菜鸟我感激不尽啊啊啊啊

问题描述 C语言学籍管理系统,我想添加专业和家庭地址的代码,求各位大神帮帮忙!小菜鸟我感激不尽啊啊啊啊 #include #include #include #define M 2 void maininterface(); void findinterface(); void choice(long sno[], char sname[][20], int sage[], float cs[], int N); void findchoice(long sno[], char sname[][

c语言 树结构 二叉树-初学二叉树 运行有错误 瞅了几个小时无果 大神帮帮忙 找出错误在哪

问题描述 初学二叉树 运行有错误 瞅了几个小时无果 大神帮帮忙 找出错误在哪 ![图片说明](http://img.ask.csdn.net/upload/201503/07/1425715444_303984.png #include #include typedef struct Tree { int date; struct Tree *lson,*rson; }tree , *ztree; int a[200005]; ztree creat(ztree t,int n) { int h

windows-求各路大神帮帮忙,和时间控制有关

问题描述 求各路大神帮帮忙,和时间控制有关 windows里,我的意思是c语言中有一个scanf语句,在运行时需要输入,但是如果用户过了一段时间都不输入,就会结束.但是,c语言是顺序执行,如果执行到scanf时,不输入,没法往下进行,执行不到判断时间那一步......这个问题如何解决 解决方案 怎么又问这个问题! 问问题不花钱的就猛问啊(哈哈,开玩笑) ask.csdn.net/questions/158714 你已经问过啦!请注意查看! 解决方案二: 解决的办法就是再启一个线程,它负责结束.

按钮-自己参照书本写了一个Java Swing中的容器类入门程序设计,但是运行结果不对,求大神帮帮忙!

问题描述 自己参照书本写了一个Java Swing中的容器类入门程序设计,但是运行结果不对,求大神帮帮忙! /*题目是这样的:创建一个窗体在其中摆放两个内容面板对两个面板进行边框个性化设置.初始状态为第二个面板不可见,当单击第一个面板中的"打开"按钮时,第二个面板即可见:当单击第一个面板中的"关闭"按钮时,第二个面板消失. 以下是我结合书本写的代码,不知道为什么运行不了???*/import javax.swing.*;import java.awt.*;impor

php嵌套循环分类怎么写---求大神帮帮忙呀!

问题描述 php嵌套循环分类怎么写---求大神帮帮忙呀! 鼠标悬停的时候,自动显示大分类下的小分类.(JS已经写出来了,就是php部分不会嵌套) <li class="nav-sub" data-tips="sub-school"> <a href="<{:U('Product/products')}>" class="tit">销售与支持</a> <div class=&

c#-跪求大神帮帮忙,都好说。。。

问题描述 跪求大神帮帮忙,都好说... 实验目的: 1. 掌握常用控件的属性.方法.事件 2. 掌握窗体的常用属性.方法和事件 3. 掌握Windows应用程序人机界面可视化设计方法 4. 掌握事件驱动模型的思想 5. 巩固C#语言中类的定义.继承.流程控制语句等基础知识 实验步骤: (1) 在.Net环境中建立Windows窗体应用程序: (2) 定义枚举类型 Public enum SexType {男, 女, 未知}: Public enum ProTitle (助教,讲师,副教授.教授.