首页 科普 资讯 养生 问答 找医院 相关问答
首页> 问答

...语言用c或者c++,采用栈来实现这个函数。高分悬赏~~

发布网友 发布时间:2024-10-22 16:33

我来回答

5个回答

热心网友 时间:16小时前

【程序】
# include
int delta_i[ ]={2,1,-1,-2,-2,-1,1,2};
int delta_j[ ]={1,2,2,1,-1,-2,-2,-1};
int board[8][8];
int exitn(int i,int j,int s,int a[ ])
{ int i1,j1,k,count;
for (count=k=0;k<8;k++)
{ i1=i+delta_i[(s+k)%8];
j1=i+delta_j[(s+k)%8];
if (i1>=0&&i1<8&&j1>=0&&j1<8&&board[I1][j1]==0)
a[count++]=(s+k)%8;
}
return count;
}

int next(int i,int j,int s)
{ int m,k,mm,min,a[8],b[8],temp;
m=exitn(i,j,s,a);
if (m==0) return –1;
for (min=9,k=0;k
{ temp=exitn(I+delta_i[a[k]],j+delta_j[a[k]],s,b);
if (temp
{ min=temp;
kk=a[k];
}
}
return kk;
}

void main()
{ int sx,sy,i,j,step,no,start;
for (sx=0;sx<8;sx++)
for (sy=0;sy<8;sy++)
{ start=0;
do {
for (i=0;i<8;i++)
for (j=0;j<8;j++)
board[j]=0;
board[sx][sy]=1;
I=sx; j=sy;
For (step=2;step<64;step++)
{ if ((no=next(i,j,start))==-1) break;
I+=delta_i[no];
j+=delta_j[no];
board[j]=step;
}
if (step>64) break;
start++;
} while(step<=64)
for (i=0;i<8;i++)
{ for (j=0;j<8;j++)
printf(“%4d”,board[j]);
printf(“\n\n”);
}
scanf(“%*c”);
}
}

七、分治法【问题】 大整数乘法
问题描述:
通常,在分析一个算法的计算复杂性时,都将加法和乘法运算当作是基本运算来处理,即将执行一次加法或乘法运

算所需的计算时间当作一个仅取决于计算机硬件处理速度的常数。
这个假定仅在计算机硬件能对参加运算的整数直接表示和处理时才是合理的。然而,在某些情况下,我们要处理很

大的整数,它无法在计算机硬件能直接表示的范围内进行处理。若用浮点数来表示它,则只能近似地表示它的大小

,计算结果中的有效数字也受到限制。若要精确地表示大整数并在计算结果中要求精确地得到所有位数上的数字,

就必须用软件的方法来实现大整数的算术运算。
请设计一个有效的算法,可以进行两个n位大整数的乘法运算。
设X和Y都是n位的二进制整数,现在要计算它们的乘积XY。我们可以用小学所学的方法来设计一个计算乘积XY的算

法,但是这样做计算步骤太多,显得效率较低。如果将每2个1位数的乘法或加法看作一步运算,那么这种方法要作

O(n2)步运算才能求出乘积XY。下面我们用分治法来设计一个更有效的大整数乘积算法。

图6-3 大整数X和Y的分段
我们将n位的二进制整数X和Y各分为2段,每段的长为n/2位(为简单起见,假设n是2的幂),如图6-3所示。
由此,X=A2n/2+B,Y=C2n/2+D。这样,X和Y的乘积为:
XY=(A2n/2+B)(C2n/2+D)=AC2n+(AD+CB)2n/2+BD (1)
如果按式(1)计算XY,则我们必须进行4次n/2位整数的乘法(AC,AD,BC和BD),以及3次不超过n位的整数加法(

分别对应于式(1)中的加号),此外还要做2次移位(分别对应于式(1)中乘2n和乘2n/2)。所有这些加法和移

位共用O(n)步运算。设T(n)是2个n位整数相乘所需的运算总数,则由式(1),我们有:
(2)
由此可得T(n)=O(n2)。因此,用(1)式来计算X和Y的乘积并不比小学生的方法更有效。要想改进算法的计算

复杂性,必须减少乘法次数。为此我们把XY写成另一种形式:
XY=AC2n+[(A-B)(D-C)+AC+BD]2n/2+BD (3)
虽然,式(3)看起来比式(1)复杂些,但它仅需做3次n/2位整数的乘法(AC,BD和(A-B)(D-C)),6次加、

减法和2次移位。由此可得:
(4)
用解递归方程的套用公式法马上可得其解为T(n)=O(nlog3)=O(n1.59)。利用式(3),并考虑到X和Y的符号对结果

的影响,我们给出大整数相乘的完整算法MULT如下:
function MULT(X,Y,n); {X和Y为2个小于2n的整数,返回结果为X和Y的乘积XY}
begin
S=SIGN(X)*SIGN(Y); {S为X和Y的符号乘积}
X=ABS(X);
Y=ABS(Y); {X和Y分别取绝对值}
if n=1 then
if (X=1)and(Y=1) then return(S)
else return(0)
else begin
A=X的左边n/2位;
B=X的右边n/2位;
C=Y的左边n/2位;
D=Y的右边n/2位;
ml=MULT(A,C,n/2);
m2=MULT(A-B,D-C,n/2);
m3=MULT(B,D,n/2);
S=S*(m1*2n+(m1+m2+m3)*2n/2+m3);
return(S);
end;
end;
上述二进制大整数乘法同样可应用于十进制大整数的乘法以提高乘法的效率减少乘法次数。
【问题】 最接近点对问题
问题描述:
在应用中,常用诸如点、圆等简单的几何对象代表现实世界中的实体。在涉及这些几何对象的问题中,常需要了解

其邻域中其他几何对象的信息。例如,在空中交通控制问题中,若将飞机作为空间中移动的一个点来看待,则具有

最大碰撞危险的2架飞机,就是这个空间中最接近的一对点。这类问题是计算几何学中研究的基本问题之一。下面

我们着重考虑平面上的最接近点对问题。
最接近点对问题的提法是:给定平面上n个点,找其中的一对点,使得在n个点的所有点对中,该点对的距离最小。
严格地说,最接近点对可能多于1对。为了简单起见,这里只限于找其中的一对。
这个问题很容易理解,似乎也不难解决。我们只要将每一点与其他n-1个点的距离算出,找出达到最小距离的两个

点即可。然而,这样做效率太低,需要O(n2)的计算时间。我们能否找到问题的一个O (nlogn)算法。
这个问题显然满足分治法的第一个和第二个适用条件,我们考虑将所给的平面上n个点的集合S分成2个子集S1和S2

,每个子集中约有n/2个点,然后在每个子集中递归地求其最接近的点对。在这里,一个关键的问题是如何实现分

治法中的合并步骤,即由S1和S2的最接近点对,如何求得原集合S中的最接近点对,因为 S1和S2的最接近点对未必

就是S的最接近点对。如果组成S的最接近点对的2个点都在S1中或都在S2中,则问题很容易解决。但是,如果这2个

点分别在 S1和S2中,则对于S1中任一点p,S2中最多只有n/2个点与它构成最接近点对的候选者,仍需做n2/4次计

算和比较才能确定S的最接近点对。因此,依此思路,合并步骤耗时为O(n2)。整个算法所需计算时间T(n)应满足:
T(n)=2T(n/2)+O(n2)
它的解为T(n)=O(n2),即与合并步骤的耗时同阶,显示不出比用穷举的方法好。从解递归方程的套用公式法,我们

所有点

热心网友 时间:16小时前

利用栈,就是定义一个栈后向将0,1,2 入栈,然后可以递归判断
如果n=3 直接 stack[3]=3,入栈
否则 先将n-1,n-2,n-3 三个位置出栈,并用临时变量记录下来,求出stack[n]=stack[n-1]+stack[n-2]+stack[n-3],然后将这四个值分别入栈。

热心网友 时间:16小时前

使用赤寒轩37的吧,我刚想这么写来着,看着有人回答了。

热心网友 时间:16小时前

楼上用的是递归的方法,但不符合题意。
栈和递归是两种不同的方法,手动栈要比系统递归栈效率高得多。

#include <stdio.h>
#define MAX 1000

struct stack {
int e[MAX];
int top;
};

struct stack s;

int empty()
{
return !s.top;
}

int top()
{
if (!empty()) return s.e[s.top - 1];
else return -1;
}

int push(int a)
{
if (s.top == MAX) return -1;
s.e[s.top++] = a;

return 1;
}

int pop()
{
if (empty()) return -1;
return s.top--;
}

int init()
{
s.top = 0;
}

int F(int a)
{
int result = 0, tmp;
init();
push(a);

while (!empty())
{
if ((tmp = top()) >= 3)
{
pop();
push(tmp - 1);
push(tmp - 2);
push(tmp - 3);
}
else
{
result += tmp;
pop();
}
}

return result;
}

void main()
{

printf("%d\n", F(5));
}

热心网友 时间:16小时前

#inchude<iostream.h>
void main()
{ int a.b.c,s;
cout<<"输入abc"<<endl;
cin>>a>>b>>c;

s=a+b+c 后面忘了,等我查到了再回复你。。。。。。
2015湖北省公务员笔试辅导课程 “横斜清浅”的出处是哪里 “见横斜清浅”的出处是哪里 建筑节点建筑节点的意义 建筑节点构造图集:无障碍设施图书信息 建筑节点构造图集:无障碍设施内容简介 建筑节点构造图集:无障碍设施的内容简介 主板K8T800pro-8237 可以使用显卡9500GT吗?高手进 急求~.. 芯片组是VT8237R对应的主板有什么型号,原来的主板有4个内存槽.用的是... K8T800-A支持AM2吗 升级电脑!!! 高手帮忙,电信1M的网速玩魔域。魔兽和大型3D游戏会卡吗? 1G流量可以玩多久的魔域 啊? 笔记本电脑用无线上网卡玩魔域游戏每月多少流量够用? 天天玩魔域之类的游戏,一个月会消耗多少流量?我是用笔记本 玩一小时魔域要多少流量?急啊求大神帮助 咔叽探险队灵魂和体力怎么获取 咔叽探险队守护者封印加点推荐 咔叽探险队守护者封印怎么加点_守护者封印加点攻略 咔叽探险队守护者封印加点攻略 怎么加点方法详解 咔叽探险队守护者封印怎么加点?守护者封印加点方法技巧[视频]_百度知... 哪个DJ网站的歌最好听...?? 红米手机 照相机照相没有显示时间功能,能卸载安装别的照相机软件吗? 小米手机下载拍照软件为什么拍照时是横的 水费起止码啥意思 水费单上的止码是什么 还房贷有什么方案合适 青县买房贷款能分30年还吗 青县农村信用联社股份有限公司怎么样? 华为mate30进隐私点定位服务点系统服务为什么下方没事重要位置呀?_百 ... ...科大讯飞人工智能免费AI语音合成(TTS)服务Python3.10接入 ...免费人工智能AI语音合成TTS服务微软Azure(Python3.10接入) 现在国家自从取消三本之后,第一学历是二本的研究生博士生,就活该找不... ...现在一些省份取消了三本,只留下一本和二本,是不是就更容易上大学了... 凉席,藤席好还是竹席好 无权处分订立的合同是有效还是效力待定 无权处分的买卖合同有法律效力吗 云南财经大学统计与数学学院学院简介 云南财经大学强势专业有哪些?这个学校怎么样啊 云南财经大学的国家特色专业有哪些 ...公开网网站132433196912252540我的这个案子怎么样才能查的到_百度知... ...9点46分农历腊月29,想根据生辰八字,五行,五格起个名,我姓宁... ...父亲姓宁,母亲姓刘.阳历2012年1月15日0时42分出生 麻烦你给我女儿起一名字.2012年1月15日0时42分.姓宁.想中间带"一"字... ...年1月15日0时42分出生.根据生辰八字,响亮"好听.有意义的 有一女,姓宁,麻烦大家帮忙取个三个字的名字,谢谢 请大家帮忙取名字:爸爸姓周,妈妈姓宁,男孩子、女孩子姓名各取一个! 帮个女生取个大方优雅活泼的名字,姓宁的 ...14年8月30日出生的,晚上八点多还下着小雨,按辈分的话是“方”字辈... ...但是文件太大,用vi查看不太现实。 什么命令可以查 高分悬赏能哄妹子开心的冷笑话.拿出你们看家的!复制的不要,一条条... 湘江流经哪些地方 结婚前跟另一半出去旅行,回来后还能结婚的,能幸福一辈子 我的小狗丢了,怎样才能找回来,有什么好的办法呀? 求电影,人生遥控器 请问跟《神奇遥控器》或者是《人生遥控器》内容相似的美国喜剧片叫什么... 哪裏有美国电影《Click》即人生遥控器/神奇遥控器 看过人生遥控器(神奇遥控器)这部电影的请进来一下!如题 谢谢了_百度知 ... 《婆婆的镯子》大结局是什么揭秘 主要讲述了什么剧情故事 度蜜月婆婆一同前往,这样的妈宝男你会嫁他吗? ...陪我旅游!结婚的时候因为钱不多我主动提出不出去度蜜月的,老公... 口述:老公和婆婆轮番过来暴打我 想去蜜月旅行,但是老公说没时间该怎么劝说 情侣四大分手魔咒是什么鼓浪屿分手魔咒是真的吗 监事会挂名还会坐牢吗 老敲糖人讲述鸡毛换糖的故事 南昌鸡毛换糖酒店鸡毛换糖一词的由来 白醋减肥正确方法(蜂蜜白醋减肥法有效吗) 华为手表不知道放哪了怎么找 小米手表丢了怎么找? 我想买一台组装的电脑,作图用的,主要用到PS和3D软件,请大家帮忙配一个... 我想配一台组装电脑,平时搞下图片设计软件,,请问最经济需要多少钱?请... 运动时常有痒的感觉是怎么回事啊?为这个我常不敢运动的,请回答我!_百 ... 为什么一运动胸部就痒 我的香港汇丰卡上有九百港币,没办法去香港,本地又没有汇丰银行,如何把... ...我哥哥脸上都是血,而那个人现实中已经死了好几年了,... 梦见哥哥死了我回家又看见了他 大学班干部竞选演讲大约规定的演讲时间是多久?需要多少字的稿子? 为什么千牛信息发不出去了呢。 长沙亲子骑行线路哪里好,哪条好? 长沙县黄花镇附近好玩的地方 茶陵古镇有哪些适合亲子旅行的景点? 晚景寒鸦集,秋声旅雁归。 韩磊演唱的歌曲《等待》的歌词的内涵? 有谁知道现在苏州地区车牌是什么样子的?从到车管所一直到全部弄好要... look at me 句子成分 ...的不只是操作,还要有满满的套路,王者荣耀中有哪些“恶心”的套路呢... ...去打球,回家感觉感冒了,一直打喷嚏,估计要吃药了吧,可以不吃么... ...一件外套,回家就感冒了,一直打喷嚏,估计要吃药了吧? 直冷冰箱多久结霜 直冷式冰箱什么时候需要除冰?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com