| 12345678910111213141516171819202122232425262728293031323334353637 |
- import 'package:flutter/material.dart';
- import 'tool_kit.dart';
- /// n 边形染色:用 k 种颜色给 n 边形的 n 个顶点染色,相邻顶点不同色。
- ///
- /// 圈图 Cₙ 的色多项式是 (k−1)ⁿ + (−1)ⁿ(k−1)。
- class CycleColoringPage extends StatefulWidget {
- const CycleColoringPage({super.key});
- @override
- State<CycleColoringPage> createState() => _CycleColoringPageState();
- }
- class _CycleColoringPageState extends State<CycleColoringPage> {
- final _n = ToolField('n (边数)', hint: '不小于 3 的整数',
- keyboard: TextInputType.number);
- final _k = ToolField('k (颜色数)', hint: '正整数', keyboard: TextInputType.number);
- @override
- Widget build(BuildContext context) => ToolScaffold(
- title: 'n 边形染色',
- fields: [_n, _k],
- compute: (session) async {
- final n = int.tryParse(_n.text);
- final k = int.tryParse(_k.text);
- if (n == null || n < 3) throw Exception('n 要填一个不小于 3 的整数');
- if (k == null || k < 1) throw Exception('k 要填一个正整数');
- return exactAndApprox(
- session,
- '染色方案数',
- '($k-1)^$n + ($k-1)*(-1)^$n',
- );
- },
- );
- }
|