harumakigohan686

CP1067 模拟洗牌

考到了函数的递归+回溯,很有意思

俺的做法:

#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <math.h>
char b[1000];
char c[1000];
char d[1000];
char a[1000];
char f[1000];
void change(char a[1000],int n);
int main()
{

    int n;
    gets(a);
    scanf("%d",&n);
    change(a,n);
    printf("%s\n",d);
    return 0;
}
void change(char a[1000],int n)
{
    int k,x=0,y=0,z=0,w=0,l=0;
    k=strlen(a);
    int i,j;
    for(i=0; i<k/2; i++)
    {
        b[x]=a[i];
        x++;
    }
    b[x]='\0';
    for(j=i; j<k; j++)
    {
        c[y]=a[j];
        y++;
    }
    c[y]='\0';
    for(int q=0; q<k; q++)
    {
        if(q%2==0)
        {
            d[z]=b[w];
            z++;
            w++;
        }
        else
        {
            d[z]=c[l];
            z++;
            l++;
        }
    }
    d[z]='\0';
   if(n!=1)
   {
       change(d,n-1);
   }
}

posted on 2023-01-14 16:21  harumakigohan  阅读(43)  评论(1)    收藏  举报