AtCoder Beginner Contest 296 A~C

A - Alternately

判断字符串中字符M和F是否交替出现

#include 

using namespace std;

int main() {
	int n;
	cin >> n;
	string s;
	cin >> s;
	for(int i = 1; i < s.size(); i++) {
		if(s[i] != s[i-1]) continue;
		else {
			cout << "No";
			return 0;
		}
	}
	cout << "Yes";
	return 0;
}

B - Chessboard

8行8列的矩阵,从左到右,列为 a ~ h,从上到下,行为 8 ~ 1.矩阵中只有一个*,输出他代表的行列值。

#include 

using namespace std;

char a[10][10];

int main() {
	for(int i = 1; i <= 8; i++) {
		for(int j = 1; j <= 8; j++) {
			cin >> a[i][j];
		}
	}

	int r = 0, c = 0;
	for(int i = 1; i <= 8; i++) {
		for(int j = 1; j <= 8; j++) {
			if(a[i][j] == '*') {
				r = i;
				c = j;
				break;
			}
		}
		if(r && c) break;
	}
	cout << char('a' + c - 1) << 8 - r + 1;
	return 0;
}

C - Gap Existence

判断一组序列中是否存在两个数相减的值为给定的x。做法:双指针扫描整个序列,对每一轮扫描,找到第一个相减大于等于x的位置,如果等于x则可以退出程序,如果都没有则不满足题意。

#include 

using namespace std;

const int N = 2e5 + 10;
int a[N];

int main() {
	int n, x;
	cin >> n >> x;
	for(int i = 1; i <= n; i++) cin >> a[i];

	sort(a + 1, a + n + 1);
	for(int i = 1, j = 1; i <= n; i++) {
		while(j <= n) {
			if(a[j] - a[i] >= x) {
				break;
			}
			j++;
		}
		if(a[j] - a[i] == x) {
			cout << "Yes";
			return 0;
		}
	}
	cout << "No";
	return 0;
}

你可能感兴趣的:(AtCoder,c语言,c++,算法)