设计程序按从大到小依次输出函数f(a+b)=2*a*a+b*b的最小的100个函数值

来源:百度知道 编辑:UC知道 时间:2024/06/21 23:40:12
设计程序按从大到小的次序依次输出函数f(a,b)=2*a*a+b*b的最小的100个函数值及相应的两个参数的值,其中a和b均为自然数。
要求:(1)作为函数值的存储结构应尽可能节省空间;
(2)所设计算法及整个程序的时间复杂度为尽可能小。

希望各位达人帮忙解决,是用c++语言。

自然数: 0,1,2,3,4,5,6,7...
r[20] 存 自然数 平方 值:0,1,4,9,。。。
前400个f(a,b) 存 s[],相应的a,b 存 a[],b[]
排序后,从大到小,输出最小的100个s[] ,

#include <stdio.h>
#include<stdio.h>

void main()
{
int r[20];
int i,j,n;
int ia,ib;
int s[400],a[400],b[400];

for (i=0;i<20;i++) r[i] = i * i;
n=0;
for (ia=0;ia<20;ia++)
for (ib=0;ib<20;ib++)
{
a[n] = ia; b[n] = ib; s[n] = 2 * r[ia] + r[ib];
n = n + 1;
};
printf("n=%d\n",n);

for (i=0;i<n-1;i++)
for (j=i+1;j<n;j++)
{
if (s[i] > s[j]) {
ia = s[i]; s[i] = s[j] ; s[j] = ia;
ia = a[i]; a[i] = a[j] ; a[j] = ia;
ia = b[i]; b[i] = b[j] ; b[j] = ia;
};
};

for (j=0;j<300;j++){
if (s[j+1] == s[j])
for (i=j+1;i<300;i++) {
s[i] = s[i+1] ; a[i] = a[i+1]; b[i] = b[i+1];
};
}
for (j=0;j<200;j++){
if (s[j+1] == s[j])

设计程序,从键盘输入一个三位数abc,现要求依次输入出从右到左的各位数字,即输出另一个三位数cba. 用inputbox函数输入三个任意整数,按从大到小的顺序输出.VB过程怎么设计? 设计一程序,用随机函数产生30个两位整数(不能有相同的数),按从小到大的顺序排列输出 C语言程序中任意输入三个数,要求按从大到小的顺序输出,程序怎么写(用函数调用实现)? 语言程序:用函数调用的方法从键盘输入一个十六进制数,以十进制输出 设计一个四则运算的程序,从键盘输入计算式如:5*6-7+8/2= ,按从左到右计算输出 C语言 编写程序,从键盘输入10个数据,按从大到小的顺序输出 设计一个函数,从键盘读入一行字符,返回最长单词的长度,同时输出该单词的位置. 编写程序,利用malloc函数开辟动态存储单元,存放输入的三个整数。然后按从大小到大的顺序输出这三个数 编写C程序,用指针和函数的方法实现将从键盘上输入的10个数按逆序存放并输出