请看下面程序,从5个数中随机挑3个组成一组,并做相应的计算,输出所有可能的组合和计算结果:
int main()
{
int i,j,n;
double g,m,f;
double b[5]={9,8,7,6,5};
double a[5][5]={{1,0.3,0.7,1.9,2.0},
{0.8,1,0.7,0.7,0.6},
{0.7,0.8,1,0.3,0.4},
{0.8,0.9,0.7,1,0.5},
{0.7,0.6,0.5,0.4,1}};
for(i=1;i<=4;i++)
for(j=i+1;j<=4;j++)
for(n=j+1;n<=5;n++)
{
g=b[i]+b[j]+b[n];
m=a[i][j]+a[i][n]+a[j][n];
f=g/m;
printf("%d,%d,%d,%f\n",i,j,n,f);
} 问题:如果我想根据计算结果f,从大到小排序,既根据结果排序对应的组合,该怎么做呢? 若只取最大的前20个,又该怎样做。数字有可能不止5,可能上百~
int main()
{
int i,j,n;
double g,m,f;
double b[5]={9,8,7,6,5};
double a[5][5]={{1,0.3,0.7,1.9,2.0},
{0.8,1,0.7,0.7,0.6},
{0.7,0.8,1,0.3,0.4},
{0.8,0.9,0.7,1,0.5},
{0.7,0.6,0.5,0.4,1}};
for(i=1;i<=4;i++)
for(j=i+1;j<=4;j++)
for(n=j+1;n<=5;n++)
{
g=b[i]+b[j]+b[n];
m=a[i][j]+a[i][n]+a[j][n];
f=g/m;
printf("%d,%d,%d,%f\n",i,j,n,f);
} 问题:如果我想根据计算结果f,从大到小排序,既根据结果排序对应的组合,该怎么做呢? 若只取最大的前20个,又该怎样做。数字有可能不止5,可能上百~
解决方案 »
- 高手快来,pfnBkCheck问题
- BITMAPINFO获取位图大小的问题!
- 求助:ActiveX控件无发添加!!
- 好久都没在CSDN上混了,昨晚看了我们这版非技术社区的一篇帖子,很是感动!(顺便散分)
- DLL调用的问题,强烈加分!(在线等,急切)
- 请问怎么在创建工具栏时把它设置成不可拖动状态?3X
- 关于 opengl中的depth test和 blend之间冲突的问题,急!急!急!
- 关于托盘图标的问题?????
- DAO+access为什么不行?
- 请大虾帮助!!! 怎样改变菜单栏的颜色,送分多多!!
- 为何调用pView->Navigate2( strUrl )程序没响应??
- 急救!!!串口通讯错误
方案二:动态创建一个堆,要前几个时,运用几次堆排序就行了