1、通过查询课程建设网信息,“分支”就是采用广度优先的策略,依次搜索E结点的所有分支,也就是所有相邻结点,支割线把一个图形分成多个部分,确定支割线的数目n。
2、找到所有的交点,让每耐指个交点都成为一个新的节点。
3、连接所有的节点,形成一棵树,并标出每个支割线所对应的边。
4、根据树的性质,通过计算分支节点的个数,即可得到分支的数目。
需要注意的是,分支的计算结果可能存在误差,因此在实际应用中需要根据具体情况进行判昌悉配断和调整。
不知道你题目中的塔是柱状塔还是锥状塔,启肢腔对于柱状塔,源代码如下。#include "stdio.h"
#include "math.h"
double Dist(double x1, double y1, double x2, double y2)
{
return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * ( y1 - y2))
}
double GetHigh(double x, double y),
{
int signx = 1, signy = 1
if(x <0) signx = -1 /*先求点(x, y)所在象限*/
if(y <0) signy = -1
if(Dist(x, y, signx * 10, signy * 10) <= 2.0) /*求点(x, y)与最近的塔心悄衫的距离*/
return 25
else 0
}
void main( )
{
double x, y
scanf("%lf%lf", &x, &y)
printf("high = %lf", GetHigh(x, y))
}
如果是锥状塔,将求高度的函数代饥培码修改如下,其余的代码同上:
double GetHigh(double x, double y)
{
int signx = 1, signy = 1
double dist
if(x <0) signx = -1 /*先求点(x, y)所在象限*/
if(y <0) signy = -1
dist = Dist(x, y, signx * 10, signy * 10) /*求点(x, y)与最近的塔心的距离*/
if(dist <= 2.0)
return 25 * (2.0 - dist) / 2.0
else 0
}
datasegmentx db 5 x的值可以在运码这里更改,或者在debug中用e命令修改
y dw ?
dataends
codesegment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
xor ah,ah ah清零,目的是为了将字节扩展为字
mov al,x 取得数据x
cmp al,40 和40比较
jb next1 小于40转next1
jmp stop 大如野于等于40,就是x本身,直接转stop保存结果
next1: cmp al,20 小于40,渣悄喊则和20比较
jbe next2 小于等于20则转next2
add ax,ax 小于40并且大于20,x乘以2,相当于x+x,加法的执行效率比乘法高
jmp stop 转stop存结果
next2: xor al,al 小于等于20,将al清零
stop: mov y,ax 保存结果
mov ax,4c00h
int 21h
codeends
end start
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)