AcWing591 国家领导人 getline()函数的使用

原题链接
其实就是判重加计数,值得注意的是当输入的字符串中有空格的时候,例如人名的时候,可以用getline()方法。
getchar()在标准输入输出流中,使用的时候同步不能关,
getline()方法是和cin绑定的, 大概格式为:

string s;
getline(cin, s);
#include <bits/stdc++.h>
#define pb push_back
#define fi first
#define se second
#define all(x) (x).begin(), (x).end()
#define SZ(x) (int) (x).size()
using namespace std;
typedef pair<int, int> pii;
typedef long long ll;
typedef vector<int> VI;
typedef double db;

const int N = 110;
int n, cnt[26];
void solve() {
  cin >> n;
  getchar(); // 吸收空格
  string leader;
  int maxn = 0;
  while (n--) {
    memset(cnt, 0, sizeof(cnt));
    string cur;
    getline(cin, cur);
    int tmp = 0;
    for (int i = 0; i < SZ(cur); i++) {
      if (!cnt[cur[i]-'A']) {
        cnt[cur[i]-'A']++;
        tmp++;
      }
    }
    if (tmp > maxn) {
      maxn = tmp;
      leader = cur;
    } 
    if (tmp == maxn) {
      for (int i = 0, j = 0; i < SZ(leader) && j < SZ(cur); i++, j++) {
        if (leader[i] < cur[i]) break;
        else if (leader[i] > cur[i]) {
          leader = cur;
          break;
        }
      }
    }
  }
  cout << leader << '\n';
}

int main() {
  // ios::sync_with_stdio(false);
  // cin.tie(0);
  int tt;
  cin >> tt;
  for (int i = 1; i <= tt; i++) {
    cout << "Case #" << i << ": ";
    solve();
  }
  return 0;
}

posted on 2022-10-05 16:08  chelly酱  阅读(32)  评论(0)    收藏  举报

导航