博文
数据结构--搬砖问题:今有36块砖,36人搬,男搬4,女搬3,两个小孩抬一砖,要(2007-03-18 11:42:00)
摘要:
设计一个对下列问题的求解算法,并给出该算法的时间 复杂度和空间复杂度
今有36块砖,36人搬,男搬4,女搬3,两个小孩抬一砖,要求一次搬完,问男女小孩各需若干
提示:用穷举法求满足方程的解:
4.0*m+3.0*w+0.5*c=36.0
//源程序如下.如有不妥之处不要见怪.呵呵!!!
#include<iostream.h>#include<iomanip.h>void main(){ int m,w,c; cout<<" 男 女 小孩"<<endl; for(m=0;m<=8;m++) for(w=0;w<=11;w++){ c=36-m-w; if((4.0*m+3.0*w+0.5*c==36.0 )&&(c%3==0)) cout<<setw(6)<<m<<setw(10)<<w<<setw(10)<<c<<endl; }}
另一种方法:
#include <iostream.h>
Bz(int x,int y,float z ,float w )
{ int w,m,c;
for ( m=0;m<9;m++)
for( w=0;w<12;w++)
{ c=36-m......
古代数学家张丘建在它所撰定的《算经》中,提出这样一个问题(2007-03-17 15:36:00)
摘要:
一、公元5世纪末,我国古代数学家张丘建在它所撰定的《算经》中,提出这样一个问题:“鸡翁一,值钱五;鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问鸡翁、母、雏各几何?”意思是说公鸡每只5元,母鸡每只3元,小鸡3只1元,用100元钱买100只鸡,求公鸡、母鸡、小鸡的只数。试设计算法求解该问题,并分析你的算法的时间复杂度。
#include<iostream.h>#include<iomanip.h>void main(){ int i,j,k; cout<<" 公鸡 母鸡 小鸡"<<endl; for(i=0;i<=20;i++) for(j=0;j<33;j++){ k=100-i-j; if((5*i+3*j+k/3==100)&&(k%3==0)) cout<<setw(6)<<i<<setw(10)<<j<<setw(10)<<k<<endl; }}......
心灵火花——好的算法应该是精益求精(2007-03-15 21:45:00)
摘要:
心灵火花——好的算法应该是精益求精
1. 把一个具n个元素的数组向左循环移动i个位置的算法设计成具有较好的时间和空间性能。例如abcdefgh向左循环移动3个位置后为defghabc
提示可能三种算法
第一种算法思想:
1步 首先建立一个具有i个元数的临时数组b[i]
2步 将原数组a[n]中的前i个存在临时数组b[i]中
3步 将原数组a[n]中余下的n-I个元往前移i个位置
4步 将临时数组b[i]的元素复制回原数组的后面
算法分析:
该算法使用i个额外的存储空间,使得空间性能降低,也就是以空间换得较小的时间,所以它不是最佳算法
第二种算法思想
1步 首先设计一个函数将数组向左循移动一个位置
2步 调用该算法i 次
算法分析: 该算法由于不开辟临时存储空间,空间性能很好,
但算法的时间性能差,用时间换空间
第三种算法思想
要在有限的资源中解决这个问题似乎很困难,现在
换一个角度看这个问题,把它看作是数组ab转换成
ba ,其中a就代表数组的前i个元素,b代表数中n-i个元
素,这样问题转换成:
a′b→a′b′→(a′b′)′=( b′)′(a′)′=ba
例如把abcdefgh→defghabc
1步 设计一个逆向函数Reversse(intA[ ],int pos,int len)
2步 Reversse(A,0,i-1)→cbadefgh
2步 Reversse(A, i, n-1);→cbahgfed
 ......
继承(2007-01-14 15:05:00)
摘要:1.派生类不能访问其基类的private成员,否则会破坏基类的封装性.但是派生类能够访问基类的public成员和proected成员.2.调用析构函数的次序和调用构造函数的次序相反,因此派生类析构函数在基类函数析构函数之前调用.3.指向派生类对象的指针可以隐式地转换为指向基类对象的指针.4.对于一个派生类对象,先调用基类的构造函数,然后调用派生类的构造函数.5.不适合派生类的基类成员可以在派生类中重新定义.6.从publiC基类派生一个类时,基类的public和protected成员都成为派生类的protected成员.从private基类派生一个类时,基类的public和protected成员均成为派生类的private成员.......
有关指针(2006-12-28 21:47:00)
摘要:1.c++用三种方式向函数传递数值:按值调用(call-by-value)\用引用参数按用调用(call-by-rdference reference argument)和用指针参数按引用(call-by-reference pointer argument).2.函数参数使用或不用const限定符的可能性有六种,两种用按值调用传递参数,四种按引用调传递参数,根据最低权限原则来进行选择.3.将指针传递给函数有四种方法:非常量数据的非常量指针\常量数据的非常量指针\非常量数据的常理指针和常量数据的常理指针.4.非常量数据的常量指针总是指向相同的内存地址,该地址中的数据可以通过指针修改.5.声明为const的指针不在声明时初始化是个语法错误.6.sizeof是个运算符而不是个函数.......
