fgets用得不对么?
  • 板块P3392 涂国旗
  • 楼主Tokubara
  • 当前回复3
  • 已保存回复3
  • 发布时间2020/9/27 21:21
  • 上次更新2023/11/5 12:30:13
查看原帖
fgets用得不对么?
251011
Tokubara楼主2020/9/27 21:21
#include <cstring>
#include <cmath>
#include <cctype>
#include <cstdio>
#include <iostream>
#define MAX 52
#define inf 0x3F3F3F3F
using namespace std;

int W[MAX],B[MAX],R[MAX],sum_W[MAX],sum_B[MAX],sum_R[MAX];

int main() {
  int N, M;
  scanf("%d %d\n", &N, &M);
  char ch;
  char buf[MAX];
  for(int i=0; i<N; i++) {
    //处理一行
    fgets(buf, M+2, stdin);
    for(int j =0; j<M; j++) {
      switch(buf[j]) {
        case 'W':++W[i];break;
        case 'B':++B[i];break;
        case 'R':++R[i];
      }
    }
  }
//求和
  sum_W[0]=W[0], sum_B[0]=B[0], sum_R[0]=R[0];
  for(int i = 1; i < N; i++) {
    sum_W[i]=sum_W[i-1]+W[i];
    sum_B[i]=sum_B[i-1]+B[i];
    sum_R[i]=sum_R[i-1]+R[i];
  }
  int min_=inf;
// 遍历
  for(int i = 0; i < N-2; i++) {
    for(int j = i+1; j < N-1; j++) {
      for(int k = j+1; k<N; k++) {
        min_=min(sum_W[N-1]-sum_W[j-1]+sum_B[j-1]+sum_B[N-1]-sum_B[k-1]+sum_R[k-1],min_);
      }
    }
  }
  cout << min_;
}
第19行, 用fgets, 全是WA, 但是本机过了样例. 如果改成gets, 就可以通过. 难道这里fgets用得不对么? 我感觉挺对的呀, M+2, 一个留给\n, 一个留给\0. 如果不对, 为啥本机上样例能过?
2020/9/27 21:21
加载中...