²é¿´: 2208  |  »Ø¸´: 11
µ±Ç°Ö»ÏÔʾÂú×ãÖ¸¶¨Ìõ¼þµÄ»ØÌû£¬µã»÷ÕâÀï²é¿´±¾»°ÌâµÄËùÓлØÌû

holmescn

½ð³æ (ÕýʽдÊÖ)

[½»Á÷] ¡¾·ÖÏí¡¿¹ØÓÚ9¸öÊý×ÖÇóºÍµÄCÓïÑÔ³ÌÐò ÒÑÓÐ9È˲ÎÓë

ÓôÃÆ£¬¸Õ·¢ÉÏÈ¥¾Í±»¸ÉµôÁË¡£ÎÒÔÙ·¢Ò»¸öÌù°É¡£
¾­¹ýÎÒÒ»ÏÂÎç¼ÓÒ»ÍíÉÏ£¨´óÔ¼ÊÇÏÂÎç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);
}

[ Last edited by nono2009 on 2010-10-30 at 15:19 ]
»Ø¸´´ËÂ¥

» ²ÂÄãϲ»¶

ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

holmescn

½ð³æ (ÕýʽдÊÖ)

ºÇºÇ£¬´ó¼Ò»¥Ïàѧϰ¡£

[ Last edited by holmescn on 2010-4-27 at 11:04 ]
5Â¥2010-04-27 11:03:12
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
²é¿´È«²¿ 12 ¸ö»Ø´ð

yalefield

½ð³æ (ÎÄ̳¾«Ó¢)

ÀϺºÒ»Ã¶

¡ï ¡ï ¡ï ¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû½»Á÷
resonant(½ð±Ò+3):Ïòר¼Òѧϰ£º-£© Χ¹Û»¹ÊÇÐèҪˮƽµÄ£¬¹þ¹þ 2010-04-27 12:05
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);
}

2Â¥2010-04-27 10:48:43
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

sxlion811

½ð³æ (ÕýʽдÊÖ)

¡ï ¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû½»Á÷
resonant(½ð±Ò+1):»¶Ó­²ÎÓëÌÖÂÛ£º-£© 2010-04-27 12:05
´ËÌùÉõºÃ£¡

ÆäʵÒÔǰSASÊÇÓÃC±àдµÄ£¬ºóÀ´¸ù¾ÝÐèÒª¸ÄÓÃjava±àдµÄ¡£
CÊǺöàÈí¼þµÄÔ´Í·¡£
¿ªÐÄŬÁ¦Ò»±²×Ó
3Â¥2010-04-27 10:49:55
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

yalefield

½ð³æ (ÎÄ̳¾«Ó¢)

ÀϺºÒ»Ã¶

¡ï ¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû½»Á÷
resonant(½ð±Ò+1):»¶Ó­²ÎÓëÌÖÂÛ£º-£© 2010-04-27 12:05
ÒýÓûØÌû:
Originally posted by sxlion811 at 2010-04-27 10:49:55:
CÊǺöàÈí¼þµÄÔ´Í·¡£

ÉÏÓÐÌ죬ÏÂÓеØ
ÖмäÈ«¿¿Õâ¸öC
¼Ó¼Ó¼õ¼õ¿§·È¿à
ÕýÔò½Å±¾ÄѶÀÁ¢
4Â¥2010-04-27 10:58:55
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] 328Çóµ÷¼Á£¬Ó¢ÓïÁù¼¶551£¬ÓпÆÑо­Àú +4 ÉúÎ﹤³Ìµ÷¼Á 2026-03-17 8/400 2026-03-21 02:12 by JourneyLucky
[¿¼ÑÐ] 271²ÄÁϹ¤³ÌÇóµ÷¼Á +8 .6lL 2026-03-18 8/400 2026-03-21 00:58 by JourneyLucky
[¿¼ÑÐ] Ò»Ö¾Ô¸Î人Àí¹¤²ÄÁϹ¤³Ìר˶µ÷¼Á +9 Doleres 2026-03-19 9/450 2026-03-20 22:36 by JourneyLucky
[¿¼ÑÐ] Ò»Ö¾Ô¸ËÕÖÝ´óѧ²ÄÁÏÇóµ÷¼Á£¬×Ü·Ö315£¨Ó¢Ò»£© +5 sbdksD 2026-03-19 5/250 2026-03-20 22:10 by luoyongfeng
[¿¼ÑÐ] Ò»Ö¾Ô¸ÖÐÄÏ»¯Ñ§£¨0703£©×Ü·Ö337Çóµ÷¼Á +8 niko- 2026-03-19 9/450 2026-03-20 21:57 by luoyongfeng
[¿¼ÑÐ] Ò»Ö¾Ô¸Î÷ÄϽ»Í¨ ר˶ ²ÄÁÏ355 ±¾¿ÆË«·Ç Çóµ÷¼Á +5 Î÷ÄϽ»Í¨×¨²Ä355 2026-03-19 5/250 2026-03-20 21:10 by JourneyLucky
[¿¼ÑÐ] 289Çóµ÷¼Á +6 »³èªÎÕè¤l 2026-03-20 6/300 2026-03-20 20:30 by ѧԱ8dgXkO
[¿¼ÑÐ] ²ÄÁÏѧÇóµ÷¼Á +4 Stella_Yao 2026-03-20 4/200 2026-03-20 20:28 by ms629
[¿¼ÑÐ] Çóµ÷¼Á +3 @taotao 2026-03-20 3/150 2026-03-20 19:35 by JourneyLucky
[¿¼ÑÐ] 085600²ÄÁÏÓ뻯¹¤Çóµ÷¼Á +6 Ð÷ÐÒÓë×Ó 2026-03-17 6/300 2026-03-19 13:27 by houyaoxu
[¿¼ÑÐ] »¯Ñ§¹¤³Ì321·ÖÇóµ÷¼Á +15 ´óÃ×·¹£¡ 2026-03-15 18/900 2026-03-18 14:52 by haxia
[¿¼ÑÐ] ÊÕ¸´ÊÔµ÷¼ÁÉú +4 ÓêºóÇïºÉ 2026-03-18 4/200 2026-03-18 14:16 by elevennnne
[¿¼ÑÐ] ÉúÎïѧ071000 329·ÖÇóµ÷¼Á +3 ÎÒ°®ÉúÎïÉúÎﰮΠ2026-03-17 3/150 2026-03-18 10:12 by macy2011
[¿¼ÑÐ] 301Çóµ÷¼Á +9 yyÒªÉϰ¶Ñ½ 2026-03-17 9/450 2026-03-18 08:58 by Î޼ʵIJÝÔ­
[¿¼ÑÐ] »úеר˶325£¬Ñ°ÕÒµ÷¼ÁԺУ +3 y9999 2026-03-15 5/250 2026-03-16 19:58 by y9999
[¿¼ÑÐ] 304Çóµ÷¼Á +5 ËØÄê¼ÀÓï 2026-03-15 5/250 2026-03-16 17:00 by ÎҵĴ¬Îҵĺ£
[¿¼ÑÐ] 321Çóµ÷¼Á +5 ´óÃ×·¹£¡ 2026-03-15 5/250 2026-03-16 16:33 by houyaoxu
[¿¼ÑÐ] ÖпÆÔº²ÄÁÏ273Çóµ÷¼Á +4 yzydy 2026-03-15 4/200 2026-03-16 15:59 by Gaodh_82
[¿¼ÑÐ] ÇóÀÏʦÊÕÁôµ÷¼Á +4 jiang½ª66 2026-03-14 5/250 2026-03-15 20:11 by Winj1e
[¿¼ÑÐ] 26¿¼ÑÐÒ»Ö¾Ô¸ÖйúʯÓÍ´óѧ(»ª¶«)305·ÖÇóµ÷¼Á +3 ¼ÎÄêÐÂ³Ì 2026-03-15 3/150 2026-03-15 13:58 by ¹þ¹þ¹þ¹þºÙºÙºÙ
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û