-1
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#include <limits.h>
#include <stdbool.h>
void f(char a[], int n, int k, int l);
int main(){
int n;
int k;
scanf("%d %d",&n,&k);
char number[100000];
scanf("%s",number);
int l= 0;
if(n%2 == 0) f(number,n,k,l);
else {l = 1;f(number,n,k,l);}
return 0;
}
void f(char a[], int n, int k, int l) {
int c = 0;
for(int i = 0; i <= n/2; i++) {
if(a[n/2 - 1 - i] > a[n/2 + l + i]) {a[n/2 + l + i] = a[n/2 - 1 - i];c++;}
if(a[n/2 - 1 - i] < a[n/2 + l + i]) {a[n/2 - 1 - i] = a[n/2 + l + i]; c++;}
if(c > k) {printf("-1"); break;}
}
if(c <= k) {
int i = 0;
while(c != k || c != (k-1)) {
if(a[i] != 57) { a[i] = 57; a[n-1-i] = 57; c+=2;}
i++;
}
if(c == k-1 && n%2 == 1) a[n/2] = 57;
printf("%s", a);
}
return;
}
私は、長さnの文字列を、k個の文字を変更して、できるだけ大きくすることで、文字列を作成しようとしています。例: 入力:4 1 出力:3993 入力:6 3 出力:992299 は、セグメンテーションフォールトの上に私を導いてくださいとそれを引き起こしています。 どうもありがとう:D静的配列メモリ割り当てを使用したcのセグメンテーション違反。
@R Sahuありがとうございます。 しかし、それは完全には機能しませんでした。 私はまだ一部のテストケースでセグメント化エラーが発生しています。 –