求助,86分差一个点
查看原帖
求助,86分差一个点
502114
mengying楼主2024/11/19 15:58

第四个点没过,有没有好兄弟帮忙看一看哪可能错了

#include<stdio.h>
#include<string.h>
int main(){
    char a[260]=""; // 定义一个字符数组用于存储输入的字符串
    int n, k, b[251]={0}; // 定义变量n和k,以及一个辅助数组b用于记录选择的位置
    memset(b, -1, sizeof(b)); // 将辅助数组b初始化为-1
    fgets(a, sizeof(a), stdin); // 从标准输入读取一行字符串到数组a中
    scanf("%d", &k); // 从标准输入读取整数k
    size_t len = strlen(a); // 获取字符串的长度
    if (a[len - 1] == '\n') { // 如果字符串末尾是换行符
        a[len - 1] = '\0'; // 将其替换为字符串结束符
        len--; // 更新字符串长度
    }
    len--; // 更新字符串长度(去掉字符串结束符)
    k = len - k; // 计算需要保留的字符数
    for(int i = 1; i <= k; i++){ // 遍历需要保留的字符位置
        for(int j = b[i-1] + 1; j < len - k + i; j++){ // 从上一个选择位置的下一个位置开始遍历
            if(b[i] == -1){ // 如果当前位置还没有被选择
                b[i] = j; // 选择当前位置
            } else if((int)a[j] < (int)a[b[i]]){ // 如果当前字符比之前选择的字符小
                b[i] = j; // 更新选择的位置
            }
        }
    }
    int flag = 0; // 标记是否找到非零字符
    for(int i = 1; i <= k; i++){ // 检查选择的字符中是否有非零字符
        if(a[b[i]] != '0'){ // 如果找到非零字符
            flag = 1; // 设置标记
            break; 
        }
    }
    if(flag == 0){ // 如果没有找到非零字符
        printf("0"); // 输出0
    } else { // 如果找到非零字符
        for(int i = 1; i <= k; i++){ 
            if(a[b[i]] != ' ' && a[b[i]] != '0') // 忽略空格和零字符
                printf("%c", a[b[i]]); 
        }
    }
    return 0;
}

2024/11/19 15:58
加载中...