标题:大家一起来做题:二维数组取数求和。给力--->给分!
取消只看楼主
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
结帖率:99.34%
已结贴  问题点数:60 回复次数:6 
大家一起来做题:二维数组取数求和。给力--->给分!
输入一个n行m列(2 <= n <= 16 , 2 <= m <= 24)二维数组,每行的元素值都是0 1 2 3 …… m -1;要求从每一行取一个元素,使取得的n个元素的和等于m-1.问有多少种取法,并打印出每种取法对应的n个元素。

比如 3 * 4 的二维数组a   0 1 2 3
                         0 1 2 3
                         0 1 2 3
取数使a[0][?] + a[1][?] + a[2][?] = 3 有多少种取法,及其对应的3个数。取法数太大的可以不用打印对应元素。
搜索更多相关主题的帖子: 给力 
2012-01-21 01:25
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
得分:0 
----------------------------------->

梅尚程荀
马谭杨奚







                                                       
2012-01-21 12:16
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
得分:0 
回复 8楼 beyondyf
杨大哥确实眼光犀利。

梅尚程荀
马谭杨奚







                                                       
2012-01-22 05:19
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
得分:0 
哇,我刚回来啊。自动结贴啦。

梅尚程荀
马谭杨奚







                                                       
2012-01-29 20:59
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
得分:0 
回复 12楼 laoyang103
运行老杨的程序后得到的数貌似很小 我写了个求总数的 不知道对不对 当n 比13大的时候要计算1分钟多,而且int型已经装不下了。
程序代码:
#include  <stdio.h>

int  fun(int n, int m)
{
    int i;
    int sum = 0;

        if (m  <= 0 || n <= 0)
            return  0;
        if (m  == 1 || n == 1)
            return 1;
        if (m  == 2)
            return n;
        if (m  > 2 && n > 1)
        {
            for(i = 0; i <= m - 1; i++)
            {
                sum += fun(n - 1, m - i);
            }
            return sum;
        }
           
}

int  main()

{
    int m, n;
   

    printf("please input n & m: ");
    while(EOF != scanf("%d%d", &n, &m))
    printf("the result is %d\n", fun(n, m));
    return 0;
}

梅尚程荀
马谭杨奚







                                                       
2012-01-29 23:29
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
得分:0 
不知道对不对
程序代码:
#include  <stdio.h>
#include  <time.h>
#include  <windows.h>
#include  <dos.h>

double  fun(int n, int m)
{
    int i;
    double sum = 0;

        if (m  <= 0 || n <= 0)
            return  0;
        if (m  == 1 || n == 1)
            return 1;
        if (m  == 2)
            return n;
        if (m  > 2 && n > 1)
        {
            for(i = 0; i <= m - 1; i++)
            {
                sum += fun(n - 1, m - i);
            }
            return sum;
        }   
}

int  main()

{
    int m, n;
    double sum;
    float start, end;
   
    printf("please input n & m: ");
    while(EOF != scanf("%d%d", &n, &m))
    {
    start = clock();
    sum = fun(n, m);
    printf("the result is %lf\n", sum);
    end = clock();
    printf("time = %3.3f\n", (end-start)/CLK_TCK);
    }
    return 0;
}




梅尚程荀
马谭杨奚







                                                       
2012-01-30 00:21
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
得分:0 
回复 18楼 yxiangyxiang
3行4列应该有10种方案,你的是37,结果不对呢。

梅尚程荀
马谭杨奚







                                                       
2012-02-02 10:22



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-359913-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.807071 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved