社区
C++ 语言
帖子详情
求函数f(a,b)=2*a*a+b*b的100个最小函数值
_Wanghui_
2005-05-19 10:18:01
设计程序按从大到小的次序依次输出函数f(a,b)=2*a*a+b*b的最小的100个函数值及相应的两个参数的值,其中a和b均为自然数(包括0)。
最好先由小到大排列出,然后入栈,出栈
本以为很简单,想了想还真没好办法,要求时间复杂度尽可能底
请高手把算法说清楚点
...全文
410
38
打赏
收藏
求函数f(a,b)=2*a*a+b*b的100个最小函数值
设计程序按从大到小的次序依次输出函数f(a,b)=2*a*a+b*b的最小的100个函数值及相应的两个参数的值,其中a和b均为自然数(包括0)。 最好先由小到大排列出,然后入栈,出栈 本以为很简单,想了想还真没好办法,要求时间复杂度尽可能底 请高手把算法说清楚点
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
38 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
_Wanghui_
2005-05-24
打赏
举报
回复
Roger给了两次10分,看错了
_Wanghui_
2005-05-20
打赏
举报
回复
我加到100分了!
继续求助
andyli0418
2005-05-20
打赏
举报
回复
有难度~~ 学习 ! 顶!!
_Wanghui_
2005-05-20
打赏
举报
回复
明天再详看,晚上宿舍熄灯
_Wanghui_
2005-05-20
打赏
举报
回复
我去吃个饭,回来再关注
_Wanghui_
2005-05-20
打赏
举报
回复
楼上所言极是
这道题并不简单
c_nestor
2005-05-20
打赏
举报
回复
不用看就知道楼上不行
大家要搞清楚
不是只要考虑a++或者b++的情况的;
比如f( a, b ) = 75,// a = 5, b = 5;
这时候要考虑a = 0, f( a, b ) = 25;
还要考虑以前递增的时候中的较大者
因为以前的较大者现在可能又是较小者
感觉是一个麻烦的数学题
Rodge
2005-05-20
打赏
举报
回复
不好意思,还是不对
_Wanghui_
2005-05-20
打赏
举报
回复
前10个函数值
0,1,2,3,4,6,8,9,11,12
楼上的好像不行:(
Rodge
2005-05-20
打赏
举报
回复
#include <iostream>
using namespace std;
int fun(int a,int b)
{
return 2*a*a+b*b;
}
void min(int a,int b,int n)
{
if(n >= 100)
return;
cout << "a is \t" << a << "\t b is \t" << b <<"\t fuc is \t"<<fun(a,b) << endl;
if(fun(a-1,b+1) < fun(a+1,b))
{
min(a-1,b+1,n+1);
}
else if(fun(a,b+1) < fun(a+1,b))
min(a,b+1,n+1);
else
min(a+1,b,n+1);
}
void main()
{
min(0,0,0);
}
不知道能不能满足楼主
_Wanghui_
2005-05-20
打赏
举报
回复
继续顶,求最佳算法
mengzulin
2005-05-20
打赏
举报
回复
Sorry 看成f(a,b)=2*a*a*b*b
mengzulin
2005-05-20
打赏
举报
回复
1楼和2楼都对
假设:
a=a-1
b=a+1
则:
f(a,b)=2*a*a+b*b = 2(a-1)*(a-1)(a+1)*(a+1)
只要证明:
a*a*a*a<(a-1)*(a-1)(a+1)*(a+1) a>0
证明:
(a-1)*(a-1)(a+1)*(a+1)
=(a*a-2a+2)(a*a+2a+2)
= a*a*a*a +2a*a*a+2a*a - 2a*a*a-2a*a-4a+2a*a+4a+4
= a*a*a*a +2a*a+4
a*a*a*a<(a*a*a*a +2a*a+4)
healer_kx
2005-05-20
打赏
举报
回复
+之前是增函数
+只后也是
但是前面的递增速度快。
z =2a^2 + b^2是个啥图形啊?
截面是椭圆的抛物面。。。
??大一的课忘得差不多了。。。
z值最小就是ab处于第一卦限内。。。
后面不会 了。。。。
_Wanghui_
2005-05-20
打赏
举报
回复
顶一下
_Wanghui_
2005-05-20
打赏
举报
回复
楼上的各位,你们有没有考虑a=0,b=1,2,3,4,……的情况
还有b=0,a=1,2,3,……
ma100()给的程序前五个数据是0,1,3,6,12,17
但还应该是
0=2*0*0+0*0
1=2*0*0+1*1
2=2*1*1+0*0
3=2*1*1+1*1
4=2*0*0+2*2
6=2*1*1+2*2
……
martmy
2005-05-20
打赏
举报
回复
不好意思,有点考虑不周,
const double sqr2 = sqrt(2);
int a = 0, b = 0;
int i = 100;
int str[100];
while(i>-1)
{
str[i] = 2*a*a+b*b;
if(b+1 > sqr2*(a+1)) // 这里应该前向判定一下
a++,b--;
else
b++;
i--;
}
martmy
2005-05-20
打赏
举报
回复
直接搞定
const double sqr2 = sqrt(2);
int a = 0, b = 0;
int i = 100;
int str[100];
while(i>-1)
{
str[i] = 2*a*a+b*b;
if(b > sqr2*a)
a++;
else
b++;
i--;
}
寻开心
2005-05-20
打赏
举报
回复
这种更直接
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
#include "conio.h"
#define MIN_N 138
main()
{
int min = 0; // 2*a*a+b*b 的数值
for (int k=1 ;k<=MIN_N; )
{
for ( int b=0; b<=sqrt(min); b++ ) // 直接用可能的b来循环
{
int temp = min - b * b;
if ( temp & 1 ) continue; // 2*a*a不可能是奇数
temp >>= 1; // a*a
int a = sqrt( temp);
if ( a * a == temp ) {
printf("%03d : a=%d, b=%d, v=%d\n", k, a, b, min);
k++;
};
}
min ++;
}
_getch();
};
fire314159
2005-05-20
打赏
举报
回复
从函数值入手,从1开始递增。然后用回溯法尝试能否找到合适的整数x,y。如果确定单是2*a*a都已经超过假设的值了,还没匹配,则该假设的值肯定不是我们要找的值,函数值加1,重新考察是否能找到匹配的x,y.设计数器count,每找到一个值,就加1,直到count==100,退出。
加载更多回复(18)
输出
函数
f(a,b)=2×a2+b2的
最小
的
100
个
函数
值
及相应的两个参数的
值
设计程序按从大到小的次序依次输出
函数
f(a,b)=2×a2+b2的
最小
的
100
个
函数
值
及相应的两个参数的
值
,其中a和b均为自然数。 要求: (1)作为
函数
值
的存储结构应尽可能节省空间。 (2)所设计算法及整个程序的时间...
最小
函数
值
(minval)
给定这些Ai、Bi和Ci,请求出所有
函数
的所有
函数
值
中
最小
的m个(如有重复的要输出多个)。 【输入格式】 第一行输入两个正整数n和m。 以下n行每行三个正整数,其中第i行的三个数分别位Ai、Bi和Ci。输入数据保证...
c语言编程
100
个必背,C语言编程题必背
100
题.doc
1、当a=45,b=12时,调用该
函数
后,c=4152*c=(a...2、当a=45,b=12时,调用该
函数
后,c=1524*c=(b/10)*
100
0+(a%10)*
100
+(b%10)*10+(a/10);3、当a=45, b=12时, 调用该
函数
后, c=2514*c=(b%10)*
100
0+(a%10)*
100
+(b/1...
MATLAB中通过
最小
二乘法逼近
函数
我们使用
最小
二乘法逼近
函数
1.基
函数
基
函数
我们选用基本的 1,xxx,x2x^2x2 , x3x^3x3
函数
2.被逼近
函数
我们设为 y=2x3+x+2 ...B为
函数
在节点处基
函数
与被逼近
函数
值
的乘积矩阵 4.实现代码 %A a0 = on
c语言scanf语句赋
值
n个变量a1,a2,a3```an,c语言综合练习题及答案
}6. #include void main(void){ static char a[]=\char *p1,*p2; int k;p1=a; p2=b; for(k=0;k<=7;k++)if (*(p1+k)==*(p2+k)) printf(\ ...有一
函数
,其
函数
关系如下,试编程求对应于每一自变量的
函数
值
。x2 ...
C++ 语言
64,666
社区成员
250,488
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章