荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: Version (Who makes history and why), 信区: Program
标 题: 24点问题。
发信站: 荔园晨风BBS站 (Thu Apr 10 13:04:35 2003), 站内信件
// RESULT.cpp : Defines the entry point for the console application.
//
//穷尽所有可能的组合
//对每种组合做+,-,* ,/
//不同的运算
#include <stdafx.h>
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <malloc.h>
#define MAX 4
#define RESULT 24
int a[MAX]={5,4,3,2};//原始数据
int A[MAX];//采用的数据相当于stack
int b[MAX];//不同层次,对与a中数据是否已经使用
char c[MAX];//保存符号
int bFound;//是否发现
int bPrev=0;
void tf(float x,int l);//进行四种运算
void out(float y,int l);//判断是继续运算,还是输出结果
char *PFormat();
int main(int argc, char* argv[])
{
int i;
for(i=0;i<MAX;i++)//初始化
A[i]=0;
bFound=0;
tf(0,0);
if(bFound==0)
{
printf("\n没有发现");
}
getchar();
return 0;
}
void tf(float x,int l)
//x,上一次运算的结果
//l,当前所在运算的步数,也即层次
{
int i;
float y;
int B[MAX];
for(i=0;i<MAX;i++)
B[i]=0;
for(i=0;i<MAX;i++)
{
if(b[i]==0 && B[i]==0)
{
A[l]=a[i];
b[i]=1;
B[i]=1;
if(l==0)//层次为0,为第一个数
{
c[l]=' ';
y=a[i];
out(y,l+1);
}
else{
c[l]='+';
y=x+a[i];
out(y,l+1);
c[l]='-';
y=x-a[i];
out(y,l+1);
c[l]='*';
y=x*a[i];
out(y,l+1);
c[l]='/';
y=x/a[i];
out(y,l+1);
}
b[i]=0;
}
}
}
void out(float y,int l)
//y,上一次运算的结果
//l,当前所在运算的步数,也即层次
{
int i;
char *p;
if(l==MAX)//层次为MAX,已运算到最后,不需继续
{
if(y==RESULT)//结果对吗?
{
bFound=1;
printf("\nFound\n");
// for(i=0;i<MAX;i++)
// {
//
// printf(" %c %d",c[i],A[i]);
// }
p=PFormat();
printf("%s=%d",p,RESULT);//格式化输出
getchar();
}
}
else
{
tf(y,l);//继续运算
}
}
//格式化输出
//当由+,-转向*,/需要加()
char * PFormat()
{
char tmp[1024];
//(char *)malloc((MAX-2)*2);
static char s[1024];
//=(char *)malloc((MAX-2)*2);
int i;
memset(tmp,0x00,sizeof(tmp));
memset(s,0x00,sizeof(s));
for(i=0;i<MAX;i++)
{
if(c[i]=='+'|c[i]=='-')
{
bPrev=0;
sprintf(tmp,"%s",s);
}
else if (bPrev==0 && (c[i]=='*' || c[i]=='/'))//优先改变
{
sprintf(tmp,"(%s)",s);
bPrev=1;
}
else
{
sprintf(tmp,"%s",s);
bPrev=1;
}
sprintf(s,"%s %c %d ",tmp,c[i],A[i]);
}
return s;
}
{
sprintf(tmp,"(%s)",s);
bPrev=1;
}
else
{
sprintf(tmp,"%s",s);
bPrev=1;
}
sprintf(s,"%s %c %d ",tmp,c[i],A[i]);
}
return s;
}
--
*
* *
* *
no more to say
★ just wish you ★
good luck
※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.1.50]
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店