博文

找工作的门槛:数据结构(2008-03-03 16:16:00)

摘要:以下收集找工作时遇到的有关数据结构的问题,并逐步扩充中1、 Q:都有哪些查找算法?A:最简单的方法是顺序查找:从第一个位置开始,持续地向后查找,直到找到这个项或是到达数组的末尾。 如果查找对象是有序的,可采用折半查找。......

阅读全文(2174) | 评论:0

解决条纹级次的实验程序(2007-04-16 22:11:00)

摘要://---------------main------------------------  #include <vector>  #include <iostream>  #include "spline3.h"  #include <fstream>  #include "math.h"   #include "FringeOrder.h"  using namespace std;    int main()  { int n,m,i,j;    double u,s;    static double x[512],y[512],dy[512],ddy[512];   // static double t[36],z[36],dz[36],ddz[36];    Spline3 info;    for (i=0;i<512;i++)    {         x[i]=i;        y[i]=sin(5*3.1415926*x[i]/512);        info.readinto(x[i],y[i],0,0);    }    //for (i=0;i......

阅读全文(2596) | 评论:0

一般矩阵变换行最简形矩阵(2007-01-14 18:37:00)

摘要: function a=SimpleMatrix(x)%对矩阵实行初等行变换,,化为行最简形矩阵,其特点是:非零行的第一个非零元为1,且这些非零元所在的列的其他元素都为0%x=rand(100);object=x;[m,n]=size(object);for i=1:m    temp(1:m,1)=object(1:m,i);    if( all(abs(temp(i:m,1))<eps))        continue;    end    N_zero=find(temp);    clear temp;    [p,q]=size(N_zero);    clear Modulus;    if( all(abs(object(i,1:n))<10e-10))        continue;    end    z=1;    for j=1:p        T_M=object(N_zero(j,1),i)/object(N_zero(i,1),i);        if z==1            Modulus=T_M;            z=z+1;            continue;        end        Modulus=[Modulus,T_M];   &nbs......

阅读全文(9887) | 评论:0

利用maltab解决桌球问题(2006-12-12 10:15:00)

摘要:利用MatLab解决桌球射击方位角问题   有2个球置于矩形板之上,一个用来做射击球,另一个则是作为目标图,现在考虑的问题是,如何设置射击球的方向,从而撞击目标球,使之进入矩形板的四个角点。可以利用矩形边的反弹,忽略摩擦。 这个问题其实就是桌球射击的理想化的简化版。由于没有摩擦,所以碰撞之后,目标球的行进方向将沿着射击球球心到目标球的球心的射线方向,并且由于没有摩擦,将不需要考虑速度这个概念。简化起见,规定目标球不经过矩形边的反弹直接进洞,而射击球最多只能利用矩形边的反弹1次,我不太了解桌球上的规则如何,但我想这种简化大约也符合普通桌球玩家考虑的瞄准原则吧。 以下涉及到的角度都是以平面直线逆时针旋转与之重合所转的角度,我是这样考虑这个问题的,先从射击球考虑,目标球射入矩形板的四个角洞有四个角度,对于每一个角度,射击球都有一个确定的碰撞,即沿着射击球进洞方向的反方向,换句话说在碰撞一刹那,射击球的球心是确定的,射击球包括原位置,与矩形四条边的映射位置共有5个球心与该球心连成一条射线(该射线方向即射击球瞄准方向),然而还有个限制条件,即射击球只能撞击圆心与目标球两条切线所夹的范围,这样就需要5个镜像点与4个撞击点所连的射线是否符合该限制条件,符合的话就是我们可以瞄准的方向了。 主程序 a=input('第一个球的x坐标'); b=input('第一个球的y坐标'); r1=input('第一个球的半径'); c=input('第二个球的x坐标'); d=input('第二个球的y坐标'); r2=input('第二个球的半径'); w=input('矩形宽'); h=input('矩形高');   R=[0 w w 0;    0 0 h h]; for I=1:4 A(I)=lineangle(a,b,R(1,I),R(2,I)); %A存放第一个球到矩形四个角的角度 end Z=mirror(c,d,w,h);%z(2,5)存放了射击球的5个射击点 q=[0]; for I=1:5     [small,big]=fwei(Z(1,I),Z(2,I),a,b,r1+r2);     for J=1:4 &nb......

阅读全文(2902) | 评论:0

时钟程序(2005-10-14 10:25:00)

摘要:#include<iostream> #include<ctime>#include <windows.h>  //#include<atlbase.h> 加这个也可以using namespace std; class Clock{public:    Clock(int H=0,int M=0,int S=0):Hour(H),Minute(M),Second(S){};  //构造函数,并初始化    void SetClock(int H=0,int M=0,int S=0) {Hour=H;Minute=M;Second=S;} //设置时间    void PrintClock();  //输出时间    operator++(); //重载++private:    int Hour,Minute,Second;}; void Clock::PrintClock() //输出时间{    cout<<Hour<<":"<<Minute<<":"<<Second<<endl;} Clock::operator ++() //重载++{    Second++;    if(Second==60)    {        Second=0;        Minute++;        if(Minute==60)        {           ......

阅读全文(3402) | 评论:0

集合与子集(2005-10-12 18:41:00)

摘要:试编写一个递归函数,用来输出n 个元素的所有子集。例如,三个元素{a, b, c} 的所有子集是:{ }(空集),{a}, {b}, {c}, {a, b}, {a, c}, {b, c} 和{a, b, c}。 #include<iostream>#include<vector>using namespace std;struct Gather{ int a,b,c; Gather(int x=0,int y=0,int z=0):a(x),b(y),c(z){}}; ostream& operator<<(ostream&os,Gather&ga){ os<<'{';  if(ga.a!=0)os<<ga.a; if(ga.b!=0)os<<ga.b;    if(ga.c!=0)os<<ga.c; os<<'}'; return os;}int main(){ vector<Gather>subset; for(int i=0;i<2;i++)  for(int j=0;j<2;j++)   for(int k=0;k<2;k++)   {        int sub[3]={1,2,3};       if(i==0)sub[0]=0;    if(j==0)sub[1]=0;    if(k==0)sub[2]=0;    Gather temp(sub[0],sub[1],sub[2]);             sub......

阅读全文(3368) | 评论:0

如何计算程序运行效率(2005-10-11 13:50:00)

摘要:#include<ctime>#include<iostream>using namespace std;//函数或类 int main(){  time_t start,end;   start = time(NULL);   /* 代码段 */   end = time(NULL);   cout<<"消耗时间:"<<(end-start)<<"秒"<<endl;   return 0;}......

阅读全文(3149) | 评论:0

shell排序(2005-10-04 20:32:00)

摘要:#include<vector>using namespace std;template<class T>void sort(vector<T>&v){ const size_t n=v.size(); for(int gap=n/2;0<gap;gap/=2)  for(int i=gap;i<n;i++)   for(int j=i-gap;0<=j;j-=gap)    if(v[j+gap]<v[j]){     T temp=v[j];     v[j]=v[j+gap];     v[j+gap]=temp;    }}//typedef sort<int>  isort;#include<iostream>#include<vector>using namespace std;int main(){ vector<int>rss; int data; cin>>data; while(data){  rss.push_back(data);  cin>>data; } sort<int>(rss); for(int i=0;i<rss.size();i++)  cout<<rss[i]<<'\t'; cout<<endl;    return 0;}  ......

阅读全文(3221) | 评论:0

有理数(运算符重载集锦)(2005-09-15 11:29:00)

摘要:#if!defined(RATIONAL_H)#define RATIONAL_H #include<iostream>#include<stdlib.h>using namespace std;namespace std{ class Rational{ private:  long num,den;  void Standardize(void);  long gcd(long m,long n)const; public:  Rational(long p=0,long q=1);  Rational(double x);    friend istream&operator>>(istream&istr,Rational&x);  friend ostream&operator<<(ostream&ostr,const Rational&x);   Rational operator+(Rational&x)const;  Rational operator-(Rational&x)const;  Rational operator*(Rational&x)const;        Rational operator/(Rational&x)const;   Rational operator-(void)const;   int operator<(Rational&x)const;        int operator<=(Rational&x)const;        int operator=......

阅读全文(3708) | 评论:0

挑战统计字符串频率最优算法的终极版(2005-09-14 21:44:00)

摘要:#include<iostream> #include<string> #include <algorithm> #include<stdlib.h> using namespace std; void taxis(string&s){          //选择排序   for(int i=0;i<s.size();i++)   {     int min=i;     for(int j=i+1;j<s.size();j++)      if(s[j]<s[min])       min=j;     int temp=s[i];     s[i]=s[min];     s[min]=temp;   } } void main(){     string str;     cout<<"input the string:";     cin>>str; string s=str;     taxis(str);     int *p;     p=new int[str.size()];     for(int i=0,j=0;j<str.size();++i)     {         p[i]=count(str.begin(),str.end(),str[j]);         j+=p[i];  ......

阅读全文(3780) | 评论:0