设计程序

来源:百度知道 编辑:UC知道 时间:2024/09/24 13:42:32
设计程序按从大到小的次序依次输入函数f(a,b)=2*a2+b2的最小的100个函数值及相应的两个参数的值,其中a和b均为自然数。
1、作为函数值的存储结构应尽可能节省空间。
2、所设计算法及整个程序的时间复杂度应尽可能小。
1楼的 那个我运行不对啊?怎么办?
要不我换个题目吧,就是最古老是八皇后问题,要求可以正常运行起来!在线等,只要可以运行就给分!!快来啊

int f(int a, int b){
static int a1,b1,f1,a2,b2,f2;
if (a==a1 && b==b1) return f1;
if (a==a2 && b==b2) return f2;
a1=a2;b1=b2;f1=f2;
a2=a;b2=b;f2=2*a*a+b*b;
return f2;
}

main(){
int i,a,b;
i=1;
a=1;
b=1;
do{
printf("%d: f(%d,%d)=%d\n",i,a,b,f(a,b));
if (f(a+1,b)<f(a,b+1)) a++;
else a++;
i++;
}while (i<=100);
}

我觉得我这个程序是最优化的,存储空间不大,而且尽量避免了函数运行。

#include <stdio.h>

static char Queen[8][8];
static int a[8];
static int b[15];
static int c[15];
static int iQueenNum=0; //记录总的棋盘状态数

void qu(int i); //参数i代表行

int main()
{
int iLine,iColumn;

//棋盘初始化,空格为*,放置皇后的地方为Q
for(iLine=0;iLine<8;iLine++)
{
a[iLine]=0; //列标记初始化,表示无列冲突
for(iColumn=0;iColumn<8;iColumn++)
Queen[iLine][iColumn]='*';
}

//主、从对角线标记初始化,表示没