?? feinei.cpp
字號:
#include<iostream.h>
#include<math.h>
class feinei
{
public:
feinei(){}
~feinei(){}
void input();
void paixi();
double jisuanjue(double x);
void qiuhe(int x,int y);
void fenzu(int x,int y);
void output2();
int getn()
{
return n;
}
double geta()
{
return a[10];
}
feinei& operator=(feinei &temp)
{
n=temp.n;
a[10]=temp.a[10];
he[10]=temp.he[10];
}
void output();
int n;
private:
double a[10];
double he[10];
};
int b=0;
int aa=0;
int maa[20][20];
void feinei::input()
{
cout<<"請輸入單符號信源元素個數 :\n";
cin>>n;
cout<<"請輸入單符號概率 :\n";
for(int i=0;i<n;i++)
cin>>a[i];
}
void feinei::paixi()
{
int i,j,k;
double x;
for(i=1;i<n;i++)
{
k=i-1;
for(j=i;j<n+1;j++)
if(a[j]>a[k])
k=j;
x=a[i-1];a[i-1]=a[k];a[k]=x;
}
}
void feinei::output()
{
for(int i=0;i<n;i++)
cout<<" "<<a[i]<<endl;
}
void feinei::qiuhe(int x,int y)
{
for(int j=x;j<=y;j++)
{
he[j]=0;
for(int i=x;i<=j;i++)
{
he[j]+=a[i];
}
}
}
void feinei::fenzu(int x,int y)
{
int c;
qiuhe(x,y);
for(int i=x;i<y;i++)
{
if(jisuanjue(he[i]-he[y]/2)<=jisuanjue(he[i+1]-he[y]/2))
{c=i;break;}
}
for(int yy=x;yy<=c;yy++)
{
maa[yy][aa]=2;
}
for(yy=c+1;yy<=y;yy++)
{
maa[yy][aa]=3;
}
cout<<endl;
aa++;
if(c!=x)
{
fenzu(x,c);
}
if(c+1!=y)
{
fenzu(c+1,y);
}
}
double feinei::jisuanjue(double a)
{
if(a>=0)
{return a;}
else
{return -a;}
}
void feinei::output2()
{
for(int j=0;j<n;j++)
{
for(int i=0;i<n-1;i++)
{ if(maa[j][i]!=0)
cout<<maa[j][i]-2;
}
cout<<endl;
}
}
void main()
{
feinei dui;
dui.input();
dui.paixi();
dui.output();
dui.fenzu(0,dui.n-1);
dui.output2();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -