救救孩子吧 孩子要哭了
查看原帖
救救孩子吧 孩子要哭了
449015
real1ze楼主2021/3/12 17:32

原罪都是自己太菜 下载的数据在洛谷IDE跑也和答案一样但过不了 实在找不到问题 这次加了注释希望大家帮忙看看。。。

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#include<ctype.h>

char word[10];
char text[1000000];
int count;
int p;
int h;
int all;
int n;
int count1;
int m;

int main(){
    scanf("%s",word);
    getchar();
    getchar();
    gets(text);
    for(m=0;text[m]==' ';m++){
        count1++;
    }//统计字头前空格数
    for(; m < sizeof(text); m++){
        (text[m]==' ')?(h++):1;
    }//统计单词数
    char list[h+1][100];
    int k[h+1];
    memset(list,0,(h+1)*100);
    for(int i = 0; i < sizeof(word); i++){
        word[i] = tolower(word[i]);
    }
    for(int i = 0; text[i]!='\0'; i++){
        text[i] = tolower(text[i]);
    }//全转小写
    while(text[p]==' '){
        p++;
    }//排掉空格准备下一步分割
    for(int i=0;i<h+1;i++){
        for(int j=0;text[p]!=' '&&text[p]!='\0';j++){
            list[i][j]=text[p];
            p++;
        }
        p++;
    }//分割单词在二维list数组的每个小部分
    for(int i=0;i<h+1;i++){
        (strcmp(list[i],word)==0)?(k[count]=i,count++):(1);
    }//与word比较是否一致,同时利用k数组记录第一个单词出现的位置,count记录出现次数
    if(count==0){
        printf("-1");
        exit(0);
    }
    printf("%d",count);
    for(n=0;n<k[0];n++){
        all+=strlen(list[n]);
    }
    printf(" %d",count1+all+n);//行头空格数加 之前的单词数加 单词间空格数
    return 0;
}
2021/3/12 17:32
加载中...