设计方数算法
⑴ 设计算法
方法一:
另外搞三个数组或者链表,把除三余0,1,2的数分别放到那三个数组中,再填回原来的数组
方法二:
我讲不清楚,直接写代码了:
int k,i=1,j=n;
for(k=i;k<=j;k++)
if(A[k]%3==0)
swap(A[k],A[i++]);
else if(A[k]%3==2)
swap(A[k],A[j--]);
⑵ 立方数的算法
拿箱子来说:箱子的长宽高厘米数相乘之后得出的是体积,单位是立方厘米
如果要化成立方米,就要再除以10的6次方
例如:
62400立方厘米=0.0624立方米
希望能帮助到您,祝学习进步,望采纳,谢谢
⑶ 木材方量的计算方法及公式
在GB4814-84《原木材积表》标准中规定的原木材积计算公式是:
检尺径自4-12cm的小径原木材积公式:
V=0.7854L(D+0.45L)0.2)2÷10000 ---- (5-17)
检尺径自14cm以上的原木材积公式:
V=0.7854L{D+0.5L+0.005L2++0.000125L(14-L)2(D-10)÷10000 --- (5-18)
检尺长超出原木材积表所列范围又不符合原条标准的特殊用途圆材,其材积按以下公式计算:
V=0.8L(D+0.5L)2÷10000 --- (5-19)
以上三式中:V---原木材积(m3);
L---原木检尺长(m);
D---原木检尺径(cm)。
另外,检尺径4-6cm的原木材积数字保留四位小数,检尺径自8cm以上的原木材积数字,保留三位小数。
(3)设计方数算法扩展阅读:
木材的体积计算:
绝干密度 = 绝干材重量/绝干材体积。
任一含水率状态下的木材,测出其重量和体积,就可计算出它的木材密度。由于木材重量易于测定,且比较准确,因此关健在于精确测定木材试样的体积。目前,木材密度的测定用以下四种方法。
直接量测法 试样加工成尺寸为20×20×20mm的标准的立方体,相邻面要互相垂直。在试样各相对面的中心线位置划圈,用螺旋测微尺分别测出其径向、弦向和顺纹方向的尺寸,准确至0.01mm,用千分之一的天平称重,准确至0.001g。
气干密度试样以气干材制作,测量气干尺寸后立即称气干重,然后放入烘箱,用烘干法测出试样的绝干重量。试样烘干后,可立即测出全干状态下体积。按有关公式计算气干密度和绝(全)干密度。木材气干密度、绝(全)干密度和木材的干缩性测定可采用同一试样。
水银测容器法。此法适用于不规则试样体积的测定。但管孔较大的木材,水银易进入管孔而影响测定精度。
排水法 利用水的密度为1,试样入水后排出水的重量,与试样体积数值相等的原理而设计的。
测定时,将烧杯盛水至适当深度放置于天平托盘上,把金属针浸入水下1~2厘米后,在天平的另一端放置砝码使之平衡。
然后将金属针尖插固于已称重的试样上并浸入水中,再加砝码使之重新平衡。托盘上前、后两次砝码重量(g)之差,即为试样的体积(crn3)。操作时应注意试样不得与烧杯壁接触,并使金属针在两次平衡时的浸水深度相同。
木材的物理性质
密度
密度是某一物体单位体积的质量,通常以g/cm³ 或kg/m³来表示。木材系多孔性物质,其外形体积由细胞壁物质及孔隙(细胞腔、胞间隙、纹孔等)构成,因而密度有木材密度和木材细胞物质密度之分。
前者为木材单位体积(包括孔隙)的质量;后者为细胞壁物质(不包括孔隙)单位体积的质量。
木材密度:是木材性质的一项重要指标,根据它估计木材的实际重量,推断木材的工艺性质和木材的干缩、膨胀、硬度、强度等木材物理力学性质。木材密度,以基本密度和气干密度两种为最常用。
1、基本密度
基本密度因绝干材重量和生材(或浸渍材)体积较为稳定,测定的结果准确,故适合作木材性质比较之用。在木材干燥、防腐工业中,亦具有实用性。
2、气干密度
气干密度,是气干材重量与气干材体积之比,通常以含水率在8%~20%时的木材密度为气干密度。木材气干密度为中国进行木材性质比较和生产使用的基本依据。
木材密度的大小,受多种因素的影响,其主要影响因子为:木材含水率的大小、细胞壁的厚薄、年轮的宽窄、纤维比率的高低、抽提物含量的多少、树干部位和树龄立地条件和营林措施等。
中国林科院木材工业研究所根据木材气干密度(含水率15%时),将木材分为五级:
很小:≤0.350;小:0.351-0.550;中:0.551-0.750;大:0.751-0.950;很大:>0.950。
含水率
指木材中水重占烘干木材重的百分数。木材中的水分可分两部分,一部分存在于木材细胞胞壁内,称为吸附水;另一部分存在于细胞腔和细胞间隙之间,称为自由水(游离水)。
当吸附水达到饱和而尚无自由水时,称为纤维饱和点。木材的纤维饱和点因树种而有差异,约在23~33%之间。
木材的应用
木材在结构工程中的应用
木材是传统的建筑材料,在古建筑和现代建筑中都得到了广泛应用。在结构上,木材主要用于构架和屋顶,如梁、柱、橼、望板、斗拱等。我国许多建筑物均为木结构,它们在建筑技术和艺术上均有很高的水平,并具独特的风格。
另外,木材在建筑工程中还常用作混凝土模板及木桩等。
木材在装饰工程中的应用
在国内外,木材历来被广泛用于建筑室内装修与装饰,它给人以自然美的享受,还能使室内空间产生温暖与亲切感。在古建筑中,木材更是用作细木装修的重要材料,这是一种工艺要求极高的艺术装饰。
条木地板是室内使用最普遍的木质地面,它是由龙骨、地板等部分构成。地板有单层和双层两种,双层者下层为毛板,面层为硬木条板,硬木条板多选用水曲柳、柞木、枫木、柚木、榆木等硬质树材,单层条木板常选用松、杉等软质树材。
条板宽度一般不大于120mm,板厚为20~30mm,材质要求采用不易腐朽和变形开裂的优质板材。
拼花木地板是较高级的室内地面装修,分双层和单层两种,两者面层均为拼花硬木板层,双层者下层为毛板层。面层拼花板材多选用水曲柳、柞木、核桃木、栎木、榆木、槐木、柳桉等质地优良、不易腐朽开裂的硬木树材。
双层拼花木地板固定方法,是将面层小板条用暗钉钉在毛板上,单层拼花木地板则可采用适宜的黏结材料,将硬木面板条直接黏贴于混凝土基层上。
拼花小木条的尺寸一般为长250~300mm,宽40~60mm,板厚20~25mm,木条一般均带有企口。
护壁板又称木台度,在铺设拼花地板的房间内,往往采用木台度,以使室内空间的材料格调一致,给人一种和谐整体景观的感受。护壁板可采用木板、企口条板、胶合板等装饰而成,设计施工时可采取嵌条、拼缝、嵌装等手法进行构图,以达到装饰墙壁的目的。
木装饰线条简称木线条。木线条种类繁多,主要有楼梯扶手、压边线、墙腰线、天花角线、弯线、挂镜线等。
各类木线条立体造型各异,每类木线条又有多种断面形状,例如有平行线条、半圆线条、麻花线条、鸠尾形线条、半圆饰、齿型饰、浮饰、孤饰、S型饰、贴附饰、钳齿饰、十字花饰、梅花饰、叶型饰以及雕饰等多样。
建筑室内采用木条线装饰,可增添古朴、高雅、亲切的美感。木线条主要用作建筑物室内的墙腰装饰、墙面洞口装饰线、护壁板和勒脚的压条饰线、门框装饰线、顶棚装饰角线、楼梯栏杆的扶手、墙壁挂画条、镜框线以及高线建筑的门窗和家具等的镶边、贴附组花材料。
特别是在我国的园林建筑和宫殿式古建筑的修建工程中,木线条是一种必不可缺的装饰材料。
⑷ 设计算法的原则
设计算法的原则:
1、正确性:算法的正确性是指算法至少应该具有输入、输出和加工处理无歧义性、能正确反映问题的需要、能够得到问题的正确答案。
2、可读性:设计算法的目的,一方面是为了让计算机执行,但还有一个重要的目的就是为了便于他人的阅读,让人理解和交流,自己将来也可阅读。如果可读性不好,时间长了自己都不知道写了什么,可读性是评判算法(也包括实现它的程序代码)好坏很重要的标志。
3、健壮性:当输入的数据非法时,算法应当恰当地做出反应或进行相应处理,而不是莫名其妙的输出结果。并且处理出错的方法不应是中断程序的执行,而应是返回一个表示错误或错误性质的值,以便于在更高的抽象层次上进行处理。
4、高效率与低存储量:通常,算法的效率指的是算法的执行时间;算法的存储量指的是算法执行过程中所需要的最大存储空间,两者的复杂度都与问题的规模有关。算法分析的任务是对设计的每一个具体的算法,利用数学工具,讨论其复杂度,探讨具体算法对问题的适应性。
(4)设计方数算法扩展阅读:
算法的“正确”通常在用法上有很大的差别,大体分为以下4个层次:
1、算法程序没有语法错误;
2、算法程序能够根据正确的输入的值得到满足要求的输出结果;
3、算法程序能够根据错误的输出的值满足规格说明的输出结果;
4、算法程序对于精心设计、极其刁难的测试数据都能满足要求的输出结果。
对于这4层含义,层次要求最低,因为仅仅没有语法错误实在谈不上是好的算法。而层次(4)是最困难的,人们几乎不可能逐一验证所有的输入都得到正确的结果。因此,算法的正确性在大部分情况下都不可能用程序来证明,而是用数学方法证明的。
⑸ 设计n个数的排序算法,并要求计算算法复杂度
你要用什么排序算法呢
如果是冒泡排序,那么时间复杂度为f(n)=O(n²)。
#include<stdio.h>
#include<malloc.h>
void sort(int *arr,int n)
{
int i,j,temp;//1次
for(i=0;i<n;i++)//n+1次
for(j=0;j<n-1-i;j++)//(n-1)+(n-2)+(n-3)+....3+2+1
// =n(n-1)/2
{
if(arr[j]>arr[j+1])//(n-2)+(n-3)+...+3+2+1=(n-1)(n-2)/2
{
temp=arr[j];//(n-2)+(n-3)+...+3+2+1=(n-1)(n-2)/2
arr[j]=arr[j+1];//(n-2)+(n-3)+...+3+2+1=(n-1)(n-2)/2
arr[j+1]=temp;//(n-2)+(n-3)+...+3+2+1=(n-1)(n-2)/2
}
}
}
//时间复杂度f(n)=1+(n+1)+n(n-1)/2+4×(n-1)(n-2)/2
// =xn²+yn+z 这里的 x,y,z都算常量,如果你想计算就去算
//因为时间复杂度至于n的方数有关,所以f(n)=O(n²)
int main()
{
int n;
printf("input n:\n");
scanf("%d",&n);
int *arr = (int*)malloc(sizeof(int)*n);
printf("input the %d numbers:\n");
for(int i=0;i<n;i++)
{
scanf("%d",&arr[i]);
}
sort(arr,n);
printf("output the sort array:\n");
for(int j=0;j<n;j++)
{
printf("%d ",arr[j]);
}
printf("\n");
free(arr);
return 0;
}
//上面算排序算法的实现和算法的时间复杂度的计算过程以及结果。要说的时算法的复杂度主要是时间复杂度,不去研究空间复杂度
⑹ 设计一个算法计算1方-2方+3方-4方+……+99方-100方的值,并画出程序框图!!
先证明一个数列定理
令Ef[n] = f[n + 1], Δf[n] = f[n + 1] - f[n]
那么Δf[n] = Ef[n] - f[n],Δf[n] = (E - 1)f[n]
即Δ = E - 1
故f[n] = E^nf[0] = (Δ + 1)^nf[0] = ΣC(n,k)Δ^kf[0],证毕
a[0] = 1^2 = 1, a[1] = 1^2 + 3^2 = 10, a[2] = 10 + 5^2 = 35 a[4] = 35 + 7^2 = 84
Δ^0a[0] = 1; Δ^1a[0] = 9;Δ^2a[0] = 16;Δ^3a[0] = 8,Δ^ka[0] = 0(k > 3)
所以a[n] = n(n-1)(n-2)*4/3 + 8n^2 + n + 1
b[0] = 2^2 = 4, b[1] = 2^2 + 4^2 = 20 b[2] = 20 + 6^2 = 56 b[4] = 56 + 8^2 = 120
Δ^0b[0] = 4; Δ^1b[0] =16;Δ^2b[0] = 20;Δ^3b[0] = 8,Δ^kb[0] = 0(k > 3)
所以b[n] =n(n-1)(n-2)*4/3 + 10n^2 + 6n + 4
a[n] - b[n] = -(2n^2 + 5n + 3),带入49,结果是-5050
写程序的流程就是
output -5050
over
没有比这个更优的解了,编程需要的是正确的结果以及足够迅速!!!
⑺ 设计一个算法1方+2方+····+99方+100方的值
有求和公式的
Sigma(i^2, 1, n) = n * (n + 1) * (2n + 1) / 6
所以结果应该是 100 * 101 * 201 / 6 = 338350
这样算是效率最高的,效率为 O(1),无论 n 多大都是一下算出来。。
⑻ 设计一个算法,求所有这样的三位数这些三位数等于它各位数字的立方和。用Qbasic程序求解
你说的是 水仙花数 吗
n=100
x=1
y=0
i=0
Do
IF n=x^3+y^3+i^3 THEN
PRINT n
END IF
n=n+1
i=i+1
IF i>9 THEN
i=0
y=y+1
END IF
IF y>9 THEN
y=0
x=x+1
END IF
LOOP UNTIL n>=1000
END
⑼ 设计算法找出三个数中的最大值
有a,b,c三个数,比较它们的大小
方法一,按顺序两两比较,取较大的
if (a > b) {
max = a;
} else {
max = b;
}
if (max < c) {
max = c;
}方法二,假设第一个是最大的,与后面两个数进行比较,将较大的值赋给max
int max = a;
if (b > max) {
max = b;
}
if (c > max) {
max = c;
}
拓展资料
1、什么是算法
算法(algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出。简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果。
mark:我们可以把所有的算法想象为一本“菜谱”,特定的算法比如菜谱中的的一道“老醋花生米”的制作流程,只要按照菜谱的要求制作老醋花生米,那么谁都可以做出一道好吃的老醋花生米。so,这个做菜的步骤就可以理解为:“解决问题的步骤”
2、算法的意义
假设计算机无限快,并且计算机存储容器是免费的,我们还需要各种乱七八糟的算法吗?如果计算机无限快,那么对于某一个问题来说,任何一个都可以解决他的正确方法都可以的!
当然,计算机可以做到很快,但是不能做到无限快,存储也可以很便宜但是不能做到免费。
那么问题就来了效率:解决同一个问题的各种不同算法的效率常常相差非常大,这种效率上的差距的影响往往比硬件和软件方面的差距还要大。
3、如何选择算法
第一首先要保证算法的正确性
一个算法对其每一个输入的实例,都能输出正确的结果并停止,则称它是正确的,我们说一个正确的算法解决了给定的计算问题。不正确的算法对于某些输入来说,可能根本不会停止,或者停止时给出的不是预期的结果。然而,与人们对不正确算法的看法想反,如果这些算法的错误率可以得到控制的话,它们有时候也是有用的。但是一般而言,我们还是仅关注正确的算法!
第二分析算法的时间复杂度
算法的时间复杂度反映了程序执行时间随输入规模增长而增长的量级,在很大程度上能很好反映出算法的好坏。