题意:
有n个男孩和m个女孩,他们要结对跳舞,每对要有一个女孩和一个男孩,而且其中一个要求之前没有和其他人结对,求出最大可以结多少对。
如图,一条线代表一对,只有这样三种情况。
#include <iostream> #include <algorithm> #include <stdio.h> using namespace std; int main() { int n, m; while (cin >> n >> m) { int mn = min(n, m); int k = (mn<<1) - 1; k += (max(n, m) - mn); int a = 1, b = 1; cout << k << endl; int i = 1; int t= 0; for (; i < mn; i++) { printf("%d %d ", i, i); printf("%d %d ", i, i+1); t = i; } t++; for (;i <= max(n, m); i++) { if (n <= m) printf("%d %d ", t, i); else printf("%d %d ", i, t); } } return 0; }