scau:数据结构oj 实验三

//8591 计算next值
void get_next(SString T,int next[])
{
    int i=1,j=0;next[1]=0;
    while(i<=T[0])
    {
        if(j==0||T[i]==T[j])
        {
            i++;
            j++;
            next[i]=j;
        }
        else
        j=next[j];
    }
}
//8592 KMP算法
void get_next(SString T,int next[]){
// 算法4.7
// 求模式串T的next函数值并存入数组next
// 请补全代码
   int i=1,j=0;
   next[1]=0;
   while(i<=T[0])
   {
       if(j==0||T[i]==T[j])
       next[i++]=j++;
       else
       j=next[j];
   }
}

int Index_KMP(SString S,SString T,int pos){
// 算法4.6
// 利用模式串T的next函数求T在主串S中第pos个字符之后的位置
// KMP算法。请补全代码
   int next[MAXSTRLEN+1];
   get_next(T,next);
   int i=pos,j=0;
   while(i<=S[0]&&j<=T[0])
   {
       if(j==0||S[i]==T[j])
       {
           i++;
           j++;
       }
       else
       j=next[j];

   }
   if(j>=T[0])
   return i-T[0];
   else
   return 0;

}

pos=Index_KMP(S,T,0); // 请填空
//18769 不完整的排序
#include <iostream>
#include <cstdio>
#include <cstdlib>

using namespace std;

void paixu(int m,int a[])
{
    int i,j;
    i=1,j=m;
    while(i<j)
    {
        if(a[i]<0&&a[j]<0)
        i++;
        else if(a[i]<0&&a[j]>0)
        {
            i++;j--;
        }
        else if(a[i]>0&&a[j]<0)
        {
            swap(a[i],a[j]);//也可以用temp
            i++;j--;
        }
        else if(a[i]>0&&a[j]>0)
        j--;
    }
}


int main()
{
    int n;
    cin>>n;
    while(n--)
    {
        int m;
        cin>>m;
        int a[m+1];
        for(int i=1;i<=m;i++)
        cin>>a[i];
        paixu(m,a);
        for(int i=1;i<=m;i++)
        cout<<a[i]<<" ";
        cout<<endl;
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zero_019

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值