谁能帮我编这个算法,急急急!!!!

xxcc 2001-01-31 09:09:00
13 个给定数中任取4个数,这4个数中任取三数A,B,C,f1=2A-B,f2=A+B-C,
f3=2f2+f3,
遍历所有的4个数,和所有4个数中A,B,C的取法,
要求得出落在给定一段范围的f3值的数目,
并列出落在这段范围的f3数最少的5组4个数的组合。
我初学c语言,谁能帮我???多谢了!!!
...全文
2472 23 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
hornedreaper 2001-02-06
  • 打赏
  • 举报
回复
楼上的朋友算法的冗余太大,浪费了23倍的时间。
我改一下main函数,代码如下:
int main()
{
int ii,jj,mm,nn;
int a,b,c,d;
int number[]={11,24,553,64,5,6,17,8,9,10,1,12,13};
count=0;
for(ii=0;ii<10;ii++)
{
a=number[ii];
for(jj=ii+1;jj<11;jj++)
{
b=number[jj];
for(mm=jj+1;mm<12;mm++)
{
c=number[mm];
for(nn=mm+1;nn<13;nn++)
{
d=number[nn];
count_number(a,b,c,d);
}
}
}
}
//count=count/(4*3*2*1);
fprintf(stderr,"count=[%d]",count);
return 0;
}
hornedreaper 2001-02-06
  • 打赏
  • 举报
回复
楼上的说我算法有误,拿出证据来!
liuyanjun_wx 2001-02-06
  • 打赏
  • 举报
回复
楼上的这位老兄算法有误.
sSam 2001-02-03
  • 打赏
  • 举报
回复
#include <stdlib.h>
#include <stdio.h>
#define max 63
#define min 61
int count;
int main()
{
int ii,jj,mm,nn;
int a,b,c,d;
int number[]={11,24,553,64,5,6,17,8,9,10,1,12,13};
count=0;
for(ii=0;ii<13;ii++)
{
a=number[ii];
for(jj=0;jj<13;jj++)
{
if (jj==ii) continue;
b=number[jj];
for(mm=0;mm<13;mm++)
{
if ((mm==ii)||(mm==jj)) continue;
c=number[mm];
for(nn=0;nn<13;nn++)
{
if((nn==ii)||(nn==jj)||(nn==mm)) continue;
d=number[nn];
count_number(a,b,c,d);
}
}

}

}
count=count/(4*3*2*1);
fprintf(stderr,"count=[%d]",count);
return 0;
}

int count_number(int a,int b,int c,int d)
{
int aa,bb,cc,dd;
int i,j,k,l;
int num[4];
int result;
num[0]=a;
num[1]=b;
num[2]=c;
num[3]=d;

for(i=0;i<4;i++)
{
aa=num[i];
for(j=0;j<4;j++)
{
if (j==i) continue;
bb=num[j];
for(k=0;k<4;k++)
{
if((k==i)||(k==j)) continue;
cc=num[k];
result=4*aa+bb-2*cc;
for(l=0;l<4;l++)
{
if(num[l]==aa) continue;
if(num[l]==bb) continue;
if(num[l]==cc) continue;
dd=num[l];
}

if(result<max && result>min)
{
/*
fprintf(stderr,"result=[%d],aa=[%d],bb=[%d],cc=[%d],dd=[%d]\n",result,aa,bb,cc,dd);
*/
count++;
/* getchar(); */
}

}
}
}

return 0;
}
attackboy 2001-02-02
  • 打赏
  • 举报
回复
青铜兄!!!对不起,小弟有急,占占位子。
麻烦各位请到
http://www.csdn.net/expert/TopicView.asp?id=63934
帮帮忙,谢谢谢谢。。。。

happyno9 2001-02-02
  • 打赏
  • 举报
回复
还要吗?
happyno9 2001-02-02
  • 打赏
  • 举报
回复
什么是k-L变化,请教红炉雪
yes_start 2001-02-01
  • 打赏
  • 举报
回复
我想请问一下,你的题目确认正确吗?f1=2A-B;f2=A+B-C;f3=2f2+f1,所以f3=4A+B-2C,我觉得这样的结果我觉得不可能落在这个给定的范围。我倒是没有看出来上面的语法有什么问题,debug应该不会出现这样的情况。我也是臭手,不要见笑
xh_zhou 2001-02-01
  • 打赏
  • 举报
回复
你先做一个函数用来获取13个数中所有4数的组合不就行了吗?
我这儿有一个这方面的程序,用delphi写的,不知是否要?
xxcc 2001-02-01
  • 打赏
  • 举报
回复
static int b[13]={2412,2417,2422,2427,2432,2437,2442,2447,2452,2457,2462,2467,2472};
{
q1=1;
for(j=0;j<13;j++)
for(t=0;t<13;t++)
for(d=0;d<13;d++)
for(e=0;e<13;e++)
{if(t>j&&d>t&&e>d)
{ a[1][q1]=b[j];
a[2][q1]=b[t];
a[3][q1]=b[d];
a[4][q1]=b[e];
q1++;
}
else q1=q1;
}
怎么一debug,a[1][1],a[2][1],a[3][1]都为2212呢,它们应该不同的呀,搞不懂!
牛人快救命呀!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
wygduck 2001-02-01
  • 打赏
  • 举报
回复
怎么看着这三个式子有点像K-L变换
xxcc 2001-02-01
  • 打赏
  • 举报
回复
怎么过了一天也没人回呀????????
有牛人吗???????
ccxx 2001-02-01
  • 打赏
  • 举报
回复
to yes_start(Tonny2000):
我的f1中的A,B和f2中的A,B不是相同的,
是任选的三个数或两个数
ccxx 2001-02-01
  • 打赏
  • 举报
回复
to xh_zhou(一介夫):
我的信箱:mini-yeer@21cn.com,
谢谢你了!
babysloth 2001-01-31
  • 打赏
  • 举报
回复
题目是不是都写错了
f3=2f2+f3?????
是f3=2f2+f1吧?
xxcc 2001-01-31
  • 打赏
  • 举报
回复
怎么没人理我呀?
xxcc 2001-01-31
  • 打赏
  • 举报
回复
To qingrun:可我只要c语言的源码,不要算法呀,你能帮我吗?多谢了!
青润 2001-01-31
  • 打赏
  • 举报
回复
老兄,你放在这里本来就是错误么。应该在数据算法板块里才是对的。^_^
移过去以后,我在回答你!
xxcc 2001-01-31
  • 打赏
  • 举报
回复
怎么没人回答我呀?好急呀!
xxcc 2001-01-31
  • 打赏
  • 举报
回复
高手快来呀!
加载更多回复(3)

19,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧