当前位置: 首页 > wzjs >正文

个人网站怎么申请注册网站开发费计入什么科目

个人网站怎么申请注册,网站开发费计入什么科目,成都住房和城乡建设局 网站,老年门户网站建设的意义最小测试用例集覆盖问题(C语言实现) 问题描述 假设我们有一系列测试用例,每个测试用例会覆盖若干个代码模块。 我们使用一个二维数组来表示这些测试用例的覆盖情况: 如果某个测试用例 i 能覆盖代码模块 j,则数组中…

最小测试用例集覆盖问题(C语言实现)

问题描述

假设我们有一系列测试用例,每个测试用例会覆盖若干个代码模块。

我们使用一个二维数组来表示这些测试用例的覆盖情况:

  • 如果某个测试用例 i 能覆盖代码模块 j,则数组中 tests[i][j] = 1
  • 否则为 0

目标是:找出一个最小数量的测试用例集合,使得这些用例组合起来能覆盖所有代码模块

如果不存在这样的集合,则输出 -1

文章目录

  • 最小测试用例集覆盖问题(C语言实现)
    • 问题描述
    • 输入描述
      • 参数范围
    • 输出描述
    • 示例
      • 示例1
      • 示例2
      • 示例3
    • 解题思路
    • C语言实现(附详细注释)
    • 总结

输入描述

  • 第一行输入两个整数 nm,分别代表测试用例总数和代码模块总数。
  • 接下来的 n 行,每行输入 m 个数字 01,表示该测试用例对各个模块的覆盖情况。

参数范围

  • 所有输入为 01
  • 1 ≤ n ≤ 20(因为需要枚举子集)

输出描述

  • 能覆盖所有代码模块的最小用例集合的大小;
  • 如果不存在这样的集合,输出 -1

示例

示例1

输入:
3 2
1 0
1 0
1 0输出:
-1

说明:所有用例都只覆盖模块0,无法覆盖模块1,返回 -1。

示例2

输入:
4 4
1 0 1 0
0 1 0 1
1 1 0 0
0 0 1 1输出:
2

说明:用例0和1组合可以覆盖所有模块,也可以是用例2和3,总数最小是2。

示例3

输入:
3 2
1 0
0 1
1 1输出:
1

说明:用例2本身就可以覆盖所有模块。


解题思路

  1. 使用位掩码表示测试用例覆盖情况
    将每个测试用例的覆盖情况转化为一个整数,二进制的每一位表示对应模块是否被覆盖。

  2. 计算目标掩码
    所有模块都被覆盖时,目标掩码为 (1 << m) - 1,即低 m 位全是1。

  3. 暴力枚举所有子集
    总共有 2 n 2^n 2n 个测试用例子集,检查每个子集是否能覆盖所有模块。

  4. 更新最小数量
    如果当前子集的按位或结果等于目标掩码,说明它能覆盖所有模块,更新最小用例数量。


C语言实现(附详细注释)

#include <stdio.h>
#include <stdlib.h>#define MAX_N 20int min(int a, int b) {return a < b ? a : b;
}int main() {int n, m;scanf("%d %d", &n, &m);int tests[MAX_N] = {0};  // 每个测试用例的掩码表示(最多20个)// 读取测试用例数据并转为位掩码for (int i = 0; i < n; ++i) {int mask = 0;for (int j = 0; j < m; ++j) {int x;scanf("%d", &x);if (x == 1) {mask |= (1 << j);  // 将第j位设为1,表示覆盖第j个模块}}tests[i] = mask;}int target = (1 << m) - 1;  // 所有模块都被覆盖时的目标掩码int ans = n + 1;  // 初始设为比最大用例数多1(无效值)// 枚举所有可能的测试用例子集(从1到2^n-1)for (int subset = 1; subset < (1 << n); ++subset) {int union_mask = 0;int count = 0;for (int i = 0; i < n; ++i) {if (subset & (1 << i)) {  // 如果第i个用例在子集中union_mask |= tests[i];  // 累加覆盖模块count++;  // 子集中的用例个数}}// 如果该子集能覆盖所有模块,尝试更新最小值if (union_mask == target) {ans = min(ans, count);}}// 如果未找到有效子集,则返回-1if (ans > n) {printf("-1\n");} else {printf("%d\n", ans);}return 0;
}

总结

  • 使用位运算可以高效表示模块覆盖情况;
  • 暴力枚举适用于数据范围较小(如测试用例≤20)的问题;
  • 注意边界条件,如所有模块都无法覆盖时应返回 -1
http://www.dtcms.com/wzjs/826770.html

相关文章:

  • 大成设计网站建设同城信息商家的网站开发
  • 网站建设广州个人工作室注册条件
  • 盐城做网站优化怎样做农产品交易平台网站
  • 东莞网站建设 钢结构wordpress redis 刷新
  • wordpress提交百度站长福州建设企业
  • 中华保险网站休闲小零食网站开发方案
  • 大连网站制作诚推ls15227连云港做网站优化
  • 建设银行网站查开户行ftp使用修改wordpress权限
  • 东莞网站建设总结wordpress插件恢复图片
  • 阿里巴巴国际站每年的基础费用是邯郸市做网站
  • 大连网站建设学校电台 主题 wordpress
  • 湖北省建设厅行政审批网站安阳安强网络科技有限公司
  • 做网站还有用吗哪有深圳网站页面设计
  • 千阳做网站中国银行建设网站首页
  • 河南省住房和城乡建设厅新网站网页投票链接怎么做
  • 网站域名注册商标有什么好处百度用户服务中心投诉电话
  • 网站管理程序做网站分成
  • 雪亮工程建设网站界面搜索指数的数据来源
  • 企业网站建设公司电话成都企业管理咨询收费方案明细
  • 软件开发公司网站wordpress 推荐主题
  • 免费详情页模板网站大连市住房和建设局网站
  • 商水住房城乡建设网站网站建设电话销售话术模板大全
  • 预约网站如何自己做丹东市做网站
  • 沧州网站建设培训学校linux视频播放网站
  • 机关建设网站餐饮网站建设的模板
  • 兴县做网站的公司网站建设怎样中英文
  • 天津网站建设品牌推广网站开发时自适应
  • 网站建设企业济南市场监督管理局简称
  • 建设银行的财务网站猪八戒网怎么做网站
  • 网站首页域名有后缀影响搜索吗cms系统表单