24小时热门版块排行榜    

查看: 1439  |  回复: 15
本帖产生 2 个 程序强帖 ,点击这里进行查看

zhliye

新虫 (初入文坛)

引用回帖:
Originally posted by sxlion811 at 2010-04-24 16:36:32:
哈哈,做出来了,不过不是我做出来的,一种有3249种结果。

用sas做出来的,不过我觉得用SQL语言也可以做出来的。

附:[url]http://www.mysas.net/forum/viewtopic.php?f=4&t=6313&p=21596#p21596[/ ...

还没看懂哈哈,不过很感谢了。
我要吃青菜。
11楼2010-04-26 14:45:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhliye

新虫 (初入文坛)

引用回帖:
Originally posted by sxlion811 at 2010-04-24 18:24:52:
还是说说算法思想吧。

虽然不同的软件实现的具体方式不一样,但是算法思想是同样的。

1,构建全排列的公式
2,将公式一一计算出来。

难点在于构建全排列的公式算法, 由于sql两表连接时可以用到笛卡尔 ...

呵呵,找的就是实现排列的算法啊,用软件不没意思了
我要吃青菜。
12楼2010-04-26 14:46:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhliye

新虫 (初入文坛)

引用回帖:
Originally posted by holmescn at 2010-04-22 12:53:49:
2楼正解
用树的生成算法。数字放到叶子上,节点是算符。类似表达式的解析树。有空可以玩一下。

PS:最近发算法贴的挺多,有意思。

其实最近学《计算数学特论》难题太多了哈。
老师出了7个题,据说这个是最简单的,
我要吃青菜。
13楼2010-04-26 14:48:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhliye

新虫 (初入文坛)

引用回帖:
Originally posted by sxlion811 at 2010-04-24 16:36:32:
哈哈,做出来了,不过不是我做出来的,一种有3249种结果。

用sas做出来的,不过我觉得用SQL语言也可以做出来的。

附:[url]http://www.mysas.net/forum/viewtopic.php?f=4&t=6313&p=21596#p21596[/ ...

不错,把符合和数字结合作为整体也是一种思想,受教了
我要吃青菜。
14楼2010-04-26 14:59:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

holmescn

金虫 (正式写手)

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
wangen994(金币+10):辛苦了,holmescn专家 2010-04-27 20:40
wangen994(程序强帖+1):辛苦了,呵呵 2010-05-09 21:28:34
经过我一个下午加半个晚上(大约是下午4点到凌晨2点)的不间断思考,终于用C语言实现了这个算法。主要是怎么排列是个麻烦的问题。一直在演算。终于在要放弃的时候想到了递归的终止条件。代码没有注释。大家凑合围观一下。不明白的地方可以讨论。谢谢。
CODE:
#include
#include
#include
#include
#include

struct node
{
    int num;
    char op;
    int digits;
};

int Calc(struct node* p, int n);
int myAtoi(char* begin, int length);
int Find(struct node* p, int n, int sum);
bool genNumber(struct node* p, int n, int r);
void toNumbers(struct node* p, int n);
void genOperator(struct node* p, int n, int flag);
void Print(struct node* p, int n);

char numbers[]="123456789";

int myAtoi(char* begin, int length)
{
    int result=0;
    char* r=malloc(length+1);
    r=strncpy(r,begin,length);
    r[length+1]=0;
    result=atoi(r);
    free(r);
    return result;
}

void toNumbers(struct node* p, int n)
{
    char* q=&numbers[0];

    for(int i=0;i     {
        p[i].num=myAtoi(q,p[i].digits);
        q+=p[i].digits;
    }
}

int Calc(struct node* p, int n)
{
    int sum=0;
    sum=p[0].num;
    if(p[0].op=='-')
        sum=0-sum;

    for(int i=1;i     {
        switch(p[i].op)
        {
            case '+':
                sum+=p[i].num;
                break;
            case '-':
                sum-=p[i].num;
                break;
            default:
                break;
        }
    }

    return sum;
}

bool genNumber(struct node* p, int n, int r)
{
    if(r<0)
    {
        p[n+2].digits++;
        p[n+1].digits=0;
        p[n].digits=0;
        return false;
    }

    if(n==0)
    {
        if(r==0)
            return false;
        p[n].digits=r;
        return true;
    }
   
    if(n==1)
    {
        p[n].digits++;
    }   
   
    if(p[n].digits==0)
    {
        p[n].digits=1;
    }
   
    genNumber(p, n-1, r-p[n].digits);
}

void genOperator(struct node* p, int n, int flag)
{   
    for(int i=0;i     {
        switch(flag & 1)
        {
            case 0:
                p[i].op='+';
                break;
            case 1:
                p[i].op='-';
                break;
        }
        flag=flag>>1;
    }

}

int Find(struct node* p, int n, int sum)
{
    int total=0;
    int res=0;
    memset(p, 0, 9*sizeof(struct node));
   
    while(p[n].digits<9)
    {
        if(genNumber(p, n, 9)==false)
            continue;
   
        toNumbers(p, n);
        for(int j=0;j         {   
            genOperator(p, n, j);
            res=Calc(p, n);
            
            if(res==sum)
            {
                for(int k=0;k                 {
                    printf("%c%d",p[k].op,p[k].num);
                }
                printf("=%d\n",res);
            
                total++;
            }
        }
    }

    return total;
}

int main()      
{               
    int sum;
    int total=0;
    struct node p[9];
    memset(p, 0, 9*sizeof(struct node));
   
    printf("Input the sum: ");
    scanf("%d",&sum);

    puts("Results:");

    for(int i=1;i<10;i++)
        total+=Find(p, i, sum);

    printf("Total is %d\n", total);
}

PS:怎么搞成CODE的样子啊?这个我不会啊。达人们教我一下,我再好好排下版。

[ Last edited by wangen994 on 2010-4-27 at 20:38 ]
15楼2010-04-27 10:29:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangen994

荣誉版主 (著名写手)

将军


小木虫(金币+0.5):给个红包,谢谢回帖交流
引用回帖:
Originally posted by holmescn at 2010-04-27 10:29:46:
经过我一个下午加半个晚上(大约是下午4点到凌晨2点)的不间断思考,终于用C语言实现了这个算法。主要是怎么排列是个麻烦的问题。一直在演算。终于在要放弃的时候想到了递归的终止条件。代码没有注释。大家凑合围 ...

辛苦了
16楼2010-04-27 20:39:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zhliye 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 304求调剂 +4 ahbd 2026-03-14 4/200 2026-03-16 16:48 by 我的船我的海
[考研] 085600调剂 +5 漾漾123sun 2026-03-12 6/300 2026-03-16 15:58 by 漾漾123sun
[教师之家] 焦虑 +7 水冰月月野兔 2026-03-13 9/450 2026-03-16 10:00 by Quakerbird
[基金申请] NSFC申报书里申请人简历中代表性论著还需要在申报书最后的附件里面再上传一遍吗 20+5 NSFC2026我来了 2026-03-10 14/700 2026-03-15 23:53 by 不负韶华的虎
[考研] 274求调剂 +4 时间点 2026-03-13 4/200 2026-03-15 15:29 by Rambo13
[考研] 085601材料工程315分求调剂 +3 yang_0104 2026-03-15 3/150 2026-03-15 10:58 by peike
[考研] 材料与化工(0856)304求B区调剂 +7 邱gl 2026-03-10 11/550 2026-03-14 12:18 by 邱gl
[考研] 一志愿湖师大化学289求调剂 +6 XMCMM3.14159 2026-03-10 6/300 2026-03-14 00:28 by JourneyLucky
[考研] 332求调剂 +3 zjy101327 2026-03-11 6/300 2026-03-13 22:48 by JourneyLucky
[考研] 求材料调剂 085600英一数二总分302 前三科235 精通机器学习 一志愿哈工大 +4 林yaxin 2026-03-12 4/200 2026-03-13 22:04 by 星空星月
[考研] 求材料调剂 +5 隔壁陈先生 2026-03-12 5/250 2026-03-13 22:03 by 星空星月
[考研] 一志愿西南交大,材料专硕317求调剂 +5 lx8568 2026-03-11 5/250 2026-03-13 21:43 by peike
[考研] 281求调剂 +9 Koxui 2026-03-12 11/550 2026-03-13 20:50 by Koxui
[考研] 332求调剂 +3 Zz版 2026-03-13 3/150 2026-03-13 20:36 by 18595523086
[考研] 【0856】化学工程(085602)313 分,本科学科评估A类院校化学工程与工艺,诚求调剂 +7 小刘快快上岸 2026-03-11 7/350 2026-03-13 16:06 by ruiyingmiao
[考研] 26考研求调剂 +5 丶宏Sir 2026-03-13 5/250 2026-03-13 13:05 by JourneyLucky
[考研] 304求调剂(085602一志愿985) +12 化工人999 2026-03-09 12/600 2026-03-13 12:02 by JourneyLucky
[考研] 化工学硕306求调剂 +9 42838695 2026-03-12 9/450 2026-03-13 10:16 by houyaoxu
[考研] 调剂 +5 呵唔哦豁 2026-03-10 5/250 2026-03-10 22:00 by 28375m
[考研] 0703化学调剂 +3 三dd. 2026-03-10 3/150 2026-03-10 15:45 by peike
信息提示
请填处理意见