鱼C论坛

 找回密码
 立即注册
查看: 5878|回复: 18

[争议讨论] 看了个数据结构的题,好沮丧,都怀疑自己智商了.....不知道大家遇到是什么情况....

[复制链接]
发表于 2012-8-16 21:56:35 | 显示全部楼层 |阅读模式
1鱼币
%D$QMYN8(G1{27A2[296G0N.jpg
看到这个题,别说动手写算法了,连怎么分析都不知道。这好像不仅仅是编程能力的问题。不仅怀疑一自己的这种分析能力,能在编程上走的远站得高么(说白了就是怀疑自己智商了)。。同志们说说你们看后的情况。有一看完题目,就出思路的么。。。。。。。

明天我再发出书上给的参考算法思路。[img]file:///C:%5CDocuments%20and%20Settings%5CAdministrator%5CApplication%20Data%5CTencent%5CUsers%5C1399470763%5CQQ%5CWinTemp%5CRichOle%5C%D$QMYN8%28G1%7B27A2[296G0N.jpg[/img]

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-8-16 23:39:52 | 显示全部楼层
自己顶一个........................
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-8-17 08:44:49 | 显示全部楼层
       没感觉!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-8-17 11:58:07 | 显示全部楼层
本帖最后由 服气 于 2012-8-17 12:05 编辑

6=1+1+1+1+1+1   
6=2    +1+1+1+1
6=3        +1+1+1
6=4            +1+1
6=5                +1
6=1+1+1+1+2  去掉
6=2    +1+1+2
6=3        +1+2
6=4            +2

6=1+1+1+3  去掉
6=2    +1+3
6=3        +3

6=1+1+4  去掉
6=2    +4


6=1+5 去掉
用归纳法
找找规律就出来了

划分数计算公式 :(((n-1)+1)×(n-1))/2)-(n-2)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-8-20 23:34:30 | 显示全部楼层
===没思路,只能看4楼的解法了,555555~难道吾智商有问题:Q?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-8-23 14:18:13 | 显示全部楼层
第一直觉,用递归比较好解决,期待其它同志们比较好的答案。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-9-27 02:24:53 | 显示全部楼层
很牛B,学习 了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-1-10 12:08:13 | 显示全部楼层
应该是种计算方法吧。。。。是不是公式啊?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-1-11 19:46:51 | 显示全部楼层
我连这道题是什么意思都不知道,怎么办?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-1-14 11:39:17 | 显示全部楼层
过来看看吧!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-2-3 19:06:48 | 显示全部楼层
第一眼感觉就是递归~~~,然后,就没有然后了:funk: 题目的意思就是一个数可以由多少个数组成(不分顺序),有点像统计概率里面的取球的那种例子。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-2-5 18:28:30 | 显示全部楼层
看了下题目,一般我拿到题目,我不急着写代码,分析问题,大致想下题目该用什么方法做比较好,能后找到题目中的关键点,进行算法描述!
看到此题我的第一想法就是用递归.
算法描述我不写了,代码注释里有,不懂问我!
#include<stdio.h>
#include <conio.h>
int count=0;
void function(int n,int t)//第二个两个参数的目的是在递归的时候进行判断
{
        int k;
        for(int i=1;i<n;i++){//有规律可以知道都要循环n次
                k=n-i;          //k为分解的第一个数,i为分解的第二个数
                if (k<=t && i<=k )//当满足第一个数要小于递归传来的前面的值,第二个值要小于第一个值
                {
                        count++;//统计个数
                        function(i,k);//再次递归
                }
                else if (i>k && k<=t)//当第二个大于第一个数的时候,这个不满足
                {
                        function(i,k);//仅递归,不统计个数
                }                
        }
}
void main()
{
        int n;
        scanf("%d",&n);
        function(n,n);
        printf("%d",count+1);//因为当函数调用的循环是从第一个开始,所以这里加1
        getch();
}
网上另一解法源码:
#include<iostream>
using namespace std;
int divide(int n , int m)
{
 if(n < 1 || m < 1) return 0;
 if(n == 1 || m == 1) return 1;
 if(n == m) return (divide(n , m - 1) + 1);
 if(n < m ) return divide(n , n);
 if(n > m ) return (divide(n , m - 1) + divide(n - m,m));
}
int main()
{
 int t;
 cin>>t;
  cout<<divide(t , t)<<endl;
 return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-9-16 22:01:59 | 显示全部楼层
还差1个鱼币
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-11-26 18:36:14 | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-4-12 14:20:51 | 显示全部楼层
顶一个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-5 23:07:25 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-6 01:13:30 | 显示全部楼层
排列组合,为了避免重复,就如题中举例,划分数有大到小排列,比如6=5+1,这样1+5就不行
递归:从6里取2作为第一个的话,剩余4再划分时,不能超过2,这样就不会出现3,2,1,然后2,3,1再来一遍的情况:
def fulldivision(n,limit,state):
    if n==1 or n == 0:
        yield (n,)
    else:
        for i in range(min(n,limit),0,-1):
            for result in fulldivision(n-i,i,state + (i,)):
                yield (i,) + result
c = 0
for res in fulldivision(6,6,()):
        c += 1
        print ('Solution %d: ' % c,res)
结果如下:
Solution 1:  (6, 0)
Solution 2:  (5, 1)
Solution 3:  (4, 2, 0)
Solution 4:  (4, 1, 1)
Solution 5:  (3, 3, 0)
Solution 6:  (3, 2, 1)
Solution 7:  (3, 1, 1, 1)
Solution 8:  (2, 2, 2, 0)
Solution 9:  (2, 2, 1, 1)
Solution 10:  (2, 1, 1, 1, 1)
Solution 11:  (1, 1, 1, 1, 1, 1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-6 01:17:49 | 显示全部楼层
这题目上面各位已经讲了,从八皇后里学到了一个yield,不得不用一下。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 20:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表