大一萌新,求大佬指教,只会用纯C语言,p1p2p3的处理逻辑在注释里写了。测试样例能过
#include <stdio.h>
#include <string.h>
void Cut_in(char goal[], int i, int len, int p1, int p2, int p3);
void Delete(char goal[], int i, int len);
int main()
{
int p1, p2, p3;
scanf("%d%d%d", &p1, &p2, &p3);
getchar();
char goal[1000]="\0";
gets(goal);
int len = strlen(goal);
for (int i = 0; i < len; i++){
if (goal[i] == '-'){
if (goal[i + 1] - goal[i - 1] > 1) Cut_in(goal,i,len,p1,p2,p3);
else if (goal[i + 1] - goal[i - 1] == 1) Delete(goal,i,len);
else if (goal[i + 1] - goal[i - 1] <= 0) continue;
}
}
printf("%s", goal);
return 0;
}
void Delete(char goal[], int i, int len)
{
for (; i < len; i++)
goal[i] = goal[i + 1];
goal[i] = '\0';
}
void Cut_in(char goal[], int i, int len, int p1, int p2, int p3)
{
char temp[500]="\0";
int x = (goal[i + 1] - goal[i - 1] - 1);
int m, count = 0;
for (m = i + 1; goal[m] != '\0'; m++)
temp[m - i - 1] = goal[m];
temp[m - i - 1] = '\0';
if (p3 == 1){//解决参数p3
for (m = 1; m <= x; m++) {
for (int j = 1; j <= p2; j++) {//解决参数p2
if (p1 == 1) goal[i + count] = goal[i - 1] + m;//解决参数p1
else if (p1 == 2) goal[i + count] = goal[i - 1] + m - 32;
else if (p1 == 3) goal[i + count] = '*';
count++;
}
}
}
else{//解决参数p3
for (m = x; m >= 1; m--) {
for (int j = p2; j >= 1; j--) {//解决参数p2
if (p1 == 1) goal[i + count] = goal[i - 1] + m;//解决参数p1
else if (p1 == 2) goal[i + count] = goal[i - 1] + m - 32;
else if (p1 == 3) goal[i + count] = '*';
count++;
}
}
}
for (m = 0; temp[m]!='\0'; m++)
goal[m + i + count] = temp[m];
goal[m + i + count] = '\0';
}