📄 bm.cpp
字号:
#include <iostream.h>
const int N=11;
main()
{
int max(int x,int y);
int a[N],f[N+1][N+1],fm[N+1][N+1];
int d[N],l[N+1];
int i,j,m,n,t,s,n0;
cout <<"input the binary number:";
for(i=0;i<N;i++)
cin >>a[i];
cout <<'\n';
for(i=0;i<=N;i++)
for(j=0;j<=N;j++)
{
f[i][j]=0;
fm[i][j]=0;
}
i=0;
while(a[i]==0) i++;
n0=i;
cout<<"n0="<<n0<<endl;
for(i=0;i<n0;i++) d[i]=0;
d[n0]=a[n0];
cout<<"d[n0]="<<d[n0]<<endl;
for(i=0;i<=n0;i++) l[i]=0;
l[n0+1]=n0+1;
cout<<"l[n0+1]="<<l[n0+1]<<endl;
for(i=0;i<=n0+1;i++) f[i][0]=1;
f[n0+1][n0+1]=d[n0];
for(n=n0+1;n<N;n++)
{
d[n]=a[n];
for(i=1;i<=n;i++)
d[n]+=f[n][i]*a[n-i];
d[n]=(d[n]%2==0?0:1);
if(d[n]==0)
{
for(j=0;j<=N;j++)
f[n+1][j]=f[n][j];
l[n+1]=l[n];
}
if(d[n]!=0)
{
i=n;
while(l[i-1]==l[i])
i--;
m=i-1;
cout <<"m="<<m<<",";
for(j=0;j<=N;j++)
fm[m][j]=0;
for(j=0;j<=N;j++)
{
if(f[m][j]!=0)
fm[m][j+(n-m)]=f[m][j];
}
for(j=0;j<N;j++)
{
f[n+1][j]=f[n][j]+fm[m][j]*d[n];
f[n+1][j]=(f[n+1][j]%2==0?0:1);
}
l[n+1]=max(l[n],n+1-l[n]);
}
}
cout <<'\n';
for(i=0;i<N;i++)
cout <<"d["<<i<<"]="<<d[i]<<endl;
for(i=0;i<N+1;i++)
{
for(j=0;j<N-1;j++)
cout<<f[i][j]<<",";
cout<<'\n';
}
for(i=0;i<=N;i++)
cout <<"l("<<i<<")="<<l[i]<<endl;
for(j=0;j<N;j++)
cout <<f[N][j]<<",";
cout <<endl;
}
int max(int x,int y)
{
return(x>y?x:y);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -