24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 1453  |  回复: 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 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 285求调剂 +4 AZMK 2026-04-05 6/300 2026-04-06 11:41 by cql1109
[考研] 081200-11408-276学硕求调剂 +4 崔wj 2026-04-05 4/200 2026-04-05 20:29 by 啵啵啵0119
[考研] 0854电子信息319求调剂(接受跨专业调剂) +3 星星不眨眼喽 2026-04-05 3/150 2026-04-05 20:20 by 啵啵啵0119
[考研] 080200学硕,277分,数一104,求带走! +7 瓶子PZ 2026-03-31 7/350 2026-04-05 17:49 by liucky
[考研] 材料调剂 +12 一样YWY 2026-04-02 13/650 2026-04-04 20:49 by 蓝云思雨
[考研] 求生物学调剂 +14 15172915737 2026-04-01 14/700 2026-04-04 20:13 by babysonlkd
[考研] 0835学硕299求调剂 08大类可接受 +5 useryy 2026-04-03 5/250 2026-04-04 20:07 by 蓝云思雨
[考研] 363求调剂 +7 zh096 2026-04-04 7/350 2026-04-04 17:13 by dongzh2009
[考研] 一志愿武理材料工程302调剂环化或化工 +19 Doleres 2026-03-31 20/1000 2026-04-04 16:44 by 啊俊!
[考研] 22408求调剂 354分 可跨专业 +3 hannnnnnn 2026-04-04 3/150 2026-04-04 14:35 by 土木硕士招生
[考研] 26调剂 086003 +6 失活的细胞 2026-04-04 6/300 2026-04-04 09:50 by zhangdingwa
[考研] 085501一志愿天工大,机械专硕求调剂,跨材料 +3 33上 2026-04-03 3/150 2026-04-03 14:08 by 1753564080
[考研] 330求调剂 +3 白神呜呼呼 2026-04-02 3/150 2026-04-03 10:15 by 蓝云思雨
[考研] 农学考研求调剂 +3 dkdkxm 2026-04-01 3/150 2026-04-02 16:04 by wangjagri
[考研] 化学工程专硕324分,一志愿中国矿业大学求调剂 +7 耿耿1314 2026-04-01 7/350 2026-04-02 07:40 by 尚水阁主
[考研] 292求调剂 +17 木虫er12138 2026-04-01 17/850 2026-04-01 21:37 by 七度不信任
[考研] 生物与医药考研调剂 +5 铁憨憨123425 2026-03-31 5/250 2026-04-01 18:01 by syh9288
[考研] 0703一志愿南师大334求调剂 +4 seven7yu 2026-03-30 4/200 2026-04-01 16:10 by oooqiao
[考研] 省双一流重点一本大学招收调剂 +4 wwwwffffff 2026-03-31 7/350 2026-04-01 15:23 by wwwwffffff
[考研] 求调剂,一志愿北林食品与营养095500,301分,已过六级,有科研经历 +4 快乐储蓄罐 2026-03-31 4/200 2026-04-01 09:26 by JourneyLucky
信息提示
请填处理意见