文章

6

粉丝

137

获赞

2

访问

5.8k

头像
循环位移 题解:
P1912 厦门大学2018年机试
发布于2023年9月16日 11:28
阅读数 952

#include <stdio.h>
#include <string.h>
#include <stdbool.h>

#define N 10010

char s1[N], s2[N]; //存储两个字符串 
char str[N][N]; //存储s2所有移位后的字符串
int len1, len2; //存储两个字符串的长度 

bool isRemove()
{
    if (len1 != len2) //如果长度不一样,不用比较一定不是移位的 
        return false;
        
    int i, j, k = 0;
    int index; //用来记录移位后的索引 
    //i用来记录移位的步长 
    for (i = 0; i < len2; i++)
    {
        for (j = 0; j < len2; j++)
        {
            index = (i + j) % len2; //计算新的索引位置 
            str[k][index] = s2[j];  //存放到str中 
        }
        k++;
    }
    //遍历移位后的所有字符串 
    for (i = 0; i < k; i++)
    {
    	//找到匹配了的字符串,说明是移位后的 
        if (strcmp(s1, str[i]) == 0)
            return true;
    }
    return false;
}

int main()
{
    scanf("%s%s", s1, s2);
    len1 = strlen(s1);
    len2 = strlen(s2);

    if (isRemove())
        printf("Y\n");
    else
        printf("N\n");

    return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发