首页 > 学院 > 开发设计 > 正文

蓝桥杯 2015 决赛 1 方格填数

2019-11-11 04:12:49
字体:
来源:转载
供稿:网友

在2行5列的格子中填入1到10的数字。 要求: 相邻的格子中的数,右边的大于左边的,下边的大于上边的。 如【图1.png】所示的2种,就是合格的填法。 这里写图片描述 请你计算一共有多少种可能的方案。

答案 42

同样小学奥数题 都成模板化了

#include <bits/stdc++.h>using namespace std;list<int> li;int ans = 0;int a[20];bool ok(int i, int x){ if (i == 0) return true; if (i < 5) return x > a[i - 1]; if (i == 5) return x > a[0]; return x > a[i - 1] && x > a[i - 5];}void dfs(int k){ if (k == 10) ans++; for (auto it = li.begin(); it != li.end(); it++) { if (ok(k, *it)) { a[k] = *it; it = li.erase(it); dfs(k + 1); it = li.insert(it, a[k]); } }}int main(){ for (int i = 1; i <= 10; i++) li.push_back(i); dfs(0); cout << ans << endl;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表