最佳二元序列偶搜索算法的程序

bdwxj1993 2017-03-29 05:34:39
求大神给个程序,谢谢
最佳二元互补序列偶算法的研究
利用树型结构算法搜索二元互补序列
河北工业大学苗源那篇论文里的
...全文
293 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bdwxj1993 2017-04-07
  • 打赏
  • 举报
回复
引用 7 楼 zhao4zhong1 的回复:
谢谢老师,程序已经没有错误了,小细节又进一步改进,终于可以运出结果来了,开心 接下来接着摸索。。。
赵4老师 2017-04-06
  • 打赏
  • 举报
回复
#include<iostream>
#include<math.h>
using namespace std;

int Te_zeng(int *s, int t) {
    int x1[2]; //new为M个数组元素的整形数组分配内存空间,,并将首地址赋给了指针x1
    int x2[2];
    int x3[2];
    int x4[2];
    x1[1]=1;//数组的最后一个值赋值为1
    x2[0]=1;//为数组的第一个值赋值为1
    x3[1]=1;
    x4[0]=-1;
    int Q;
    int a1;
    int a2;
    int a3;
    int a4;
    int j;

    
    switch (j) {//j的值是多少?
    case 1:  {
            int a[4]={1,-1,-1,-1};   //8种情况,将0变为-1,方便计算
            *x1=a[0];
            *(x2+1)=a[1];
            *x3=a[2];
            *(x4+1)=a[3];

            a1=(*(x1+1))*(*x2);
            a2=(*x1)*(*(x2+1));
            a3=(*(x3+1))*(*x4);
            a4=(*x3)*(*(x4+1));
            Q=a1+a2+a3+a4;
            if (Q=0) {
                t+=1;
                *s=1;
            }
        }
        break;
    case 2:   {
            int b [4]={-1,1,-1,-1};
            *x1=b[0];
            *(x2+1)=b[1];
            *x3=b[2];
            *(x4+1)=b[3];

            a1=(*(x1+1))*(*x2);
            a2=(*x1)*(*(x2+1));
            a3=(*(x3+1))*(*x4);
            a4=(*x3)*(*(x4+1));
            Q=a1+a2+a3+a4;
            if (Q=0) {
                t+=1;
                *(s+1)=1;
            }
        }
        break;
    case 3: {
            int c [4]={-1,-1,1,-1};
            *x1=c[0];
            *(x2+1)=c[1];
            *x3=c[2];
            *(x4+1)=c[3];
            a1=(*(x1+1))*(*x2);
            a2=(*x1)*(*(x2+1));
            a3=(*(x3+1))*(*x4);
            a4=(*x3)*(*(x4+1));
            Q=a1+a2+a3+a4;
            if (Q=0) {
                t+=1;
                *(s+2)=1;
            }
        }
        break;
    case 4: {
            int d [4]={-1,-1,-1,1};
            *x1=d[0];
            *(x2+1)=d[1];
            *x3=d[2];
            *(x4+1)=d[3];
            a1=(*(x1+1))*(*x2);
            a2=(*x1)*(*(x2+1));
            a3=(*(x3+1))*(*x4);
            a4=(*x3)*(*(x4+1));
            Q=a1+a2+a3+a4;
            if (Q=0) {
                t+=1;
                *(s+3)=1;
            }
        }
        break;
    case 5:  {
            int e [4]={-1,1,1,1};
            *x1=e[0];
            *(x2+1)=e[1];
            *x3=e[2];
            *(x4+1)=e[3];
            a1=(*(x1+1))*(*x2);
            a2=(*x1)*(*(x2+1));
            a3=(*(x3+1))*(*x4);
            a4=(*x3)*(*(x4+1));
            Q=a1+a2+a3+a4;
            if (Q=0) {
                t+=1;
                *(s+4)=1;
            }
        }
        break;
    case 6:  {
            int f [4]={1,-1,1,1};
            *x1=f[0];
            *(x2+1)=f[1];
            *x3=f[2];
            *(x4+1)=f[3];
            a1=(*(x1+1))*(*x2);
            a2=(*x1)*(*(x2+1));
            a3=(*(x3+1))*(*x4);
            a4=(*x3)*(*(x4+1));
            Q=a1+a2+a3+a4;
            if (Q=0) {

                t+=1;
                *(s+5)=1;
            }
        }
        break;
    case 7: {
            int g [4]={1,1,-1,1};
            *x1=g[0];
            *(x2+1)=g[1];
            *x3=g[2];
            *(x4+1)=g[3];
            a1=(*(x1+1))*(*x2);
            a2=(*x1)*(*(x2+1));
            a3=(*(x3+1))*(*x4);
            a4=(*x3)*(*(x4+1));
            Q=a1+a2+a3+a4;
            if (Q=0) {
                t+=1;
                *(s+6)=1;
            }
        }
        break;
    case 8: {
            int h [4]={1,1,1,-1};
            *x1=h[0];
            *(x2+1)=h[1];
            *x3=h[2];
            *(x4+1)=h[3];
            a1=(*(x1+1))*(*x2);
            a2=(*x1)*(*(x2+1));
            a3=(*(x3+1))*(*x4);
            a4=(*x3)*(*(x4+1));
            Q=a1+a2+a3+a4;
            if (Q=0) {
                t+=1;
                *(s+7)=1;
            }
        }
        break;
    }

    return 0;
}
int main() {
    int bit_point[8]={0};     //使字节的8位初始值为0
    int bit_number=0;         //字节中为 1 的数目
    int *p=bit_point;         //将bit_point的首地址赋给指针p
    Te_zeng(p,bit_number);

    for (int i=0;i<7;i++) {
        cout<<*p<<"\t";
        p++;
    }
    cout<<endl;
    cout<<bit_number;
    return 0;
}
bdwxj1993 2017-04-06
  • 打赏
  • 举报
回复
这个是又一次改进版的,虽然麻烦,但是错误少了 主要是实参形参,指针调用的问题了,老师给看看 #include<iostream> #include<math.h> using namespace std; int Te_zeng (int *s, int t) { int *x1=new int [2]; //new为M个数组元素的整形数组分配内存空间,,并将首地址赋给了指针x1 int *x2=new int [2]; int *x3=new int [2]; int *x4=new int [2]; x1[1]=1;//数组的最后一个值赋值为1 x2[0]=1;//为数组的第一个值赋值为1 x3[1]=1; x4[0]=-1; int Q; int a1; int a2; int a3; int a4; switch (int j=1) { case 1: { int a[4]={1,-1,-1,-1}; //8种情况,将0变为-1,方便计算 *x1=a[0]; *(x2+1)=a[1]; *x3=a[2]; *(x4+1)=a[3]; a1=(*(x1+1))*(*x2); a2=(*x1)*(*(x2+1)); a3=(*(x3+1))*(*x4); a4=(*x3)*(*(x4+1)); Q=a1+a2+a3+a4; if (Q=0) { t+=1; *s=1; } } case 2: { int b [4]={-1,1,-1,-1}; *x1=b[0]; *(x2+1)=b[1]; *x3=b[2]; *(x4+1)=b[3]; a1=(*(x1+1))*(*x2); a2=(*x1)*(*(x2+1)); a3=(*(x3+1))*(*x4); a4=(*x3)*(*(x4+1)); Q=a1+a2+a3+a4; if (Q=0) { t+=1; *(s+1)=1; }} case 3: { int c [4]={-1,-1,1,-1}; *x1=c[0]; *(x2+1)=c[1]; *x3=c[2]; *(x4+1)=c[3]; a1=(*(x1+1))*(*x2); a2=(*x1)*(*(x2+1)); a3=(*(x3+1))*(*x4); a4=(*x3)*(*(x4+1)); Q=a1+a2+a3+a4; if (Q=0) { t+=1; *(s+2)=1; }} case 4:{ int d [4]={-1,-1,-1,1}; *x1=d[0]; *(x2+1)=d[1]; *x3=d[2]; *(x4+1)=d[3]; a1=(*(x1+1))*(*x2); a2=(*x1)*(*(x2+1)); a3=(*(x3+1))*(*x4); a4=(*x3)*(*(x4+1)); Q=a1+a2+a3+a4; if (Q=0) { t+=1; *(s+3)=1; }} case 5: { int e [4]={-1,1,1,1}; *x1=e[0]; *(x2+1)=e[1]; *x3=e[2]; *(x4+1)=e[3]; a1=(*(x1+1))*(*x2); a2=(*x1)*(*(x2+1)); a3=(*(x3+1))*(*x4); a4=(*x3)*(*(x4+1)); Q=a1+a2+a3+a4; if (Q=0) { t+=1; *(s+4)=1; }} case 6: { int f [4]={1,-1,1,1}; *x1=f[0]; *(x2+1)=f[1]; *x3=f[2]; *(x4+1)=f[3]; a1=(*(x1+1))*(*x2); a2=(*x1)*(*(x2+1)); a3=(*(x3+1))*(*x4); a4=(*x3)*(*(x4+1)); Q=a1+a2+a3+a4; if (Q=0) { t+=1; *(s+5)=1; }} case 7:{ int g [4]={1,1,-1,1}; *x1=g[0]; *(x2+1)=g[1]; *x3=g[2]; *(x4+1)=g[3]; a1=(*(x1+1))*(*x2); a2=(*x1)*(*(x2+1)); a3=(*(x3+1))*(*x4); a4=(*x3)*(*(x4+1)); Q=a1+a2+a3+a4; if (Q=0) { t+=1; *(s+6)=1; }} case 8:{ int h [4]={1,1,1,-1}; *x1=h[0]; *(x2+1)=h[1]; *x3=h[2]; *(x4+1)=h[3]; a1=(*(x1+1))*(*x2); a2=(*x1)*(*(x2+1)); a3=(*(x3+1))*(*x4); a4=(*x3)*(*(x4+1)); Q=a1+a2+a3+a4; if (Q=0) { t+=1; *(s+7)=1; }} break; } return 0; if(x1!=NULL) {delete[]x1;x1=NULL;} // 请注意最好加上这一句。 delete操作只是释放x1所指向的内存 if(x1!=NULL) // 但是并不将x1赋值为NULL。这需要我们自己来做. {delete[]x2;x2=NULL;} if(x1!=NULL) {delete[]x3;x3=NULL;} if(x1!=NULL) {delete[]x4;x4=NULL;} } int main() { int bit_point[8]={0}; //使字节的8位初始值为0 int bit_number=0; //字节中为 1 的数目 int *p=bit_point; //将bit_point的首地址赋给指针p Te_zeng (int *p, int bit_number); for (int i=0;i<7;i++) { cout<<*p<<"\t"; p++; } cout<<endl; cout<<bit_number; return 0; }
引用 4 楼 zhao4zhong1 的回复:
[quote=引用 3 楼 bdwxj1993 的回复:] 老师们,我想找程序源代码,百度没有呀
耐心点,换个别的关键字再搜搜看。[/quote]
bdwxj1993 2017-04-06
  • 打赏
  • 举报
回复
自己写了个求特征字节的程序,有错误,希望老师给看看 先打算计算一下2长的互补序列偶,然后1长的为1,1,1,0。 分别在一三位后面,二四位前面添加0、1 有8中情况,符合条件 1000、0100、0010、0001、0111、1011、1101、1110 分别对应字节的8位,判断自相关函数为0 的,则相应为的字节变为1 就这样生成特征字节 #include<iostream> #include<math.h> using namespace std; int Te_eng (int *s, int t) { int *x1=new int [2]; //new为M个数组元素的整形数组分配内存空间,,并将首地址赋给了指针x1 int *x2=new int [2]; int *x3=new int [2]; int *x4=new int [2]; x1[1]=1;//数组的最后一个值赋值为1 x2[0]=1;//为数组的第一个值赋值为1 x3[1]=1; x4[0]=-1; int Q; inline int Jisuan(int x1,int x2,int x3,int x4) { a1=(*(x1+1))*(*x2); a2=(*x1)*(*(x2+1)); a3=(*(x3+1))*(*x4); a4=(*x3)*(*(x4+1)); return a1+a2+a3+a4; } switch (int j=1) { case 1: int a[4]={1,-1,-1,-1}; //8种情况,将0变为-1,方便计算 *x1=a[0]; *(x2+1)=a[1]; *x3=a[2]; *(x4+1)=a[3]; Q=Jisuan(int x1,int x2,int x3,int x4); if (Q=0) { t+=1; *s=1; } case 2: int b [4]={-1,1,-1,-1}; *x1=b[0]; *(x2+1)=b[1]; *x3=b[2]; *(x4+1)=b[3]; Q=Jisuan(int x1,int x2,int x3,int x4); if (Q=0) { t+=1; *(s+1)=1; } case 3: int c [4]={-1,-1,1,-1}; *x1=c[0]; *(x2+1)=c[1]; *x3=c[2]; *(x4+1)=c[3]; Q=Jisuan(int x1,int x2,int x3,int x4); if (Q=0) { t+=1; *(s+2)=1; } case 4: int d [4]={-1,-1,-1,1}; *x1=d[0]; *(x2+1)=d[1]; *x3=d[2]; *(x4+1)=d[3]; Q=Jisuan(int x1,int x2,int x3,int x4); if (Q=0) { t+=1; *(s+3)=1; } case 5: int e [4]={-1,1,1,1}; *x1=e[0]; *(x2+1)=e[1]; *x3=e[2]; *(x4+1)=e[3]; Q=Jisuan(int x1,int x2,int x3,int x4); if (Q=0) { t+=1; *(s+4)=1; } case 6: int f [4]={1,-1,1,1}; *x1=f[0]; *(x2+1)=f[1]; *x3=f[2]; *(x4+1)=f[3]; Q=Jisuan(int x1,int x2,int x3,int x4); if (Q=0) { t+=1; *(s+5)=1; } case 7: int g [4]={1,1,-1,1}; *x1=g[0]; *(x2+1)=g[1]; *x3=g[2]; *(x4+1)=g[3]; Q=Jisuan(int x1,int x2,int x3,int x4); if (Q=0) { t+=1; *(s+6)=1; } case 8 int h [4]={1,1,1,-1}; *x1=h[0]; *(x2+1)=h[1]; *x3=h[2]; *(x4+1)=h[3]; Q=Jisuan(int x1,int x2,int x3,int x4); if (Q=0) { t+=1; *(s+7)=1; } break; } return 0; if(p!=NULL) { delete[]x1; delete[]x2; delete[]x3; delete[]x4; x1=NULL; // 请注意最好加上这一句。 delete操作只是释放x1所指向的内存 x2=NULL; x3=NULL; x4=NULL; // 但是并不将x1赋值为NULL。这需要我们自己来做. } } int main() { int bit_point[8]={0}; //使字节的8位初始值为0 int bit_number=0; //字节中为 1 的数目 int *p=bit_point; //将bit_point的首地址赋给指针p Te_zeng (int *p, int bit_number); for (int i=0,i<7,i++) { cout<<*p<<"\t"; p++; } cout<<endl; cout<<bit_number; return 0; }
赵4老师 2017-04-05
  • 打赏
  • 举报
回复
引用 3 楼 bdwxj1993 的回复:
老师们,我想找程序源代码,百度没有呀
耐心点,换个别的关键字再搜搜看。
bdwxj1993 2017-04-05
  • 打赏
  • 举报
回复
老师们,我想找程序源代码,百度没有呀
他过江 2017-04-01
  • 打赏
  • 举报
回复
百度学术..
赵4老师 2017-03-30
  • 打赏
  • 举报
回复
百度搜相关关键字。

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧