| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 675 人关注过本帖
标题:[原创]一道数学题的求解(希望大家多多指教)
取消只看楼主 加入收藏
txbhj
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2004-12-19
收藏
 问题点数:0 回复次数:2 
[原创]一道数学题的求解(希望大家多多指教)

题目:
将5,6,7,8,9填入下面空格中使它们的积有最大值口口口X口口,试找出该组合。
我用C解答如下:
long int b[5]={0,0,0,0,0};/*定义一个全局变量数组用于存放当前所排列数组的状态*/
main()
{
int a[5]={5,6,7,8,9};
  int c[5]={0,0,0,0,0}; /*该数组用于记录乘积最大的一组数*/
int n0=0,n1=0,n2=0,n3=0,n4=0,i,k;
long int m=0;
for(i=0;i<120;i++)
{
if(!(i%5))
{printf("please press any key to continue...\n");
getch();
}
insert(a[0],n0);
insert(a[1],n1);
insert(a[2],n2);
insert(a[3],n3);
insert(a[4],n4);
if(n1==1&&n2==2&&n3==3&&n4==4)n1=-1;/*注意此判断语句的写法,将变化最快的量放在最下面*/
n1+=n2/2&&n3/3&&n4/4;
if(n2==2&&n3==3&&n4==4)n2=-1;
n2+=n3/3&&n4/4;
if(n3==3&&n4==4)n3=-1;
n3+=n4/4;
if(n4==4)n4=-1;
n4++;
if(m<(b[0]*100+b[1]*10+b[2])*(b[3]*10+b[4]))/*寻找乘积最大的组合*/
{m=(b[0]*100+b[1]*10+b[2])*(b[3]*10+b[4]);
for(k=0;k<5;k++)
c[k]=b[k]; /*记录该组合于C[5]中*/
}
for(k=0;k<5;k++)
printf("%d,",b[k]);
printf("\n");
}
printf("%d%d%d*%d%d=%ld",c[0],c[1],c[2],c[3],c[4],m);
printf("\n");
getch();
}

insert(int a,int j)/*带有位置插入元素的函数*/
{int i;
for(i=4;i>=j;i--)
b[i]=b[i-1];
b[j]=a;
}


以上代码能将每一种组合显示出来,所有组合显示完后给出题目的解。(调试无错误)希望大家指出其中的不足之处,使代码更简单。

[此贴子已经被作者于2006-3-15 12:15:05编辑过]

搜索更多相关主题的帖子: 数学题 求解 指教 
2006-03-15 12:11
txbhj
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2004-12-19
收藏
得分:0 
怎么没有人来给出自己的想法啊,大家都来讨论讨论。

我本菜鸟, 请多关照
2006-03-15 20:48
txbhj
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2004-12-19
收藏
得分:0 

你们都写得不错啊,循环语句用得好,我开始也试过用for语名来写,但我总是很难找出循环的变量,不好控制。看了你们写的代码使我受益非浅。


我本菜鸟, 请多关照
2006-03-18 12:24
快速回复:[原创]一道数学题的求解(希望大家多多指教)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.089421 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved