Files
2026-06-02 15:56:06 +08:00

150 lines
2.8 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
1必做 子集和问题(回溯) *
Score 100
已知 n+1 个正数w
i
(1≤i≤n) 和 M ,要求找出{w
i
} 的所有子集使得子集中元素之和等于 M 。解采用大小固定的n-元组(x
1
,...,x
n
) 表达其中x
i
∈{01}1≤i≤n 。若x
i
=0 ,表示解集合不包含 w
i
;若 x
i
=1表示解集合包含 w
i
。隐式约束条件是∑
i=1
n
w
i
x
i
=M。
要求利用回溯方法解决子集和数问题。
输入格式:
第一行为一个正整数 n ,表示总集规模;
第二行是正整数 M ,表示子集的和数;
第三行是总集中 n 个正整数,中间用空格隔开。
输出格式:
如果有答案则输出所有满足条件的子集用固定长度n-元组表示符合条件的一个子集即每行是一个长度为n的0/1序列按字典序排列。
如果没有答案,则输出 -1
输入样例1:
4
31
11 13 24 7
输出样例1:
0011
1101
输入样例2:
6
30
5 10 12 13 15 18
输出样例2:
001001
101100
110010
数据范围
n≤20,∑w
i
,M≤10
9
Bonus
想一想,若只要求判断是否有解,当 n=40 时,有没有在最坏情况下仍能得到答案的算法?
Code Size Limit
16 KB
Time Limit
1000 ms
Memory Limit
512 MB
Stack size limit
8192 KB
---
2 宝石排列
Score 100
有 n 种形状不同的宝石,每种形状有 n 颗,一共有 n
2
颗宝石。所有宝石一共有 n 种颜色,每种形状的 n 颗宝石颜色均不相同。现在要将这 n
2
颗宝石排成 n 行 n 列的方阵,使得方阵中每一行和每一列中的宝石,都具有 n 种不同的形状和颜色。请设计一个算法,计算对于给定的 n ,有多少种不同的宝石排列方案。
输入格式:
输入 n 值。
输出格式:
输出宝石排列方案的个数。
输入样例:
2
输出样例:
0
数据范围
1≤n≤4
Code Size Limit
16 KB
Time Limit
1000 ms
Memory Limit
512 MB
Stack size limit
8192 KB
---
3 营救问题(分支限界)
Score 100
轮船A在海上遇险它发出了求救信号。距离最近的轮船B收到了讯息必须尽快赶到那里。 通过通讯B获取了一张海洋图。这张图将海洋部分分化成n*n个单位其中用1 标明的是陆地用0标明是海洋。船只能从一个格子移到相邻的四个格子。 为了尽快赶到出事地点AB最少需要走多远的距离。
输入格式:
第一行为N 2<N<=1000
第二行到第N+1行是一个N*N的01矩阵表示海洋地图
最后一行是4个小于N的整数分别表示哥伦比亚号的行列坐标和铁塔尼号的行列坐标。
输出格式:
哥伦比亚号到铁塔尼号的最短距离,答案精确到整数。
输入样例:
3
001
101
100
1 1 3 3
输出样例:
4
Code Size Limit
16 KB
Time Limit
400 ms
Memory Limit
64 MB
Stack size limit
8192 KB
C (gcc)