不会说谎的序列

在测试环境中发现程序插入表A时出现了重复数据。通过检查序列值确认这些数据并非由程序自动生成,而是人为手动插入。本文分享了解决这一问题的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在测试环境发现自己写的程序在插入表A是有重复的数据,这就苦恼了我,如果程序正常运行是不会出现重复的数据的,到底是自己程序写的有问题还是其他测试人员手工插入的数据了??我来回看了几次代码,又做了测试,都没有重现重复数据的bug。我这下子就郁闷了,是程序有哪些细节的逻辑没有考虑清楚了还是别的什么问题??反正弄得我很不安心。。。。。

没办法,抽了支烟,仔细想了想,对了,每行记录都是有id(序列)这么一列嘛,虽然重复数据的创建时间都是一样,但是它的序列肯定是不同的,我可以查看重复数据所对应的序列值是不是连续的来判断这到底是系统自己跑出来的结果,还是人为手工插入进去的。

结果一查看重复数据的序列值果然不是连续的(因为要是系统插入重复数据的话,序列值肯定是连续的),而且相差很远。这就证明了重复数据不是同时插入进去的,而是认为手工插入的!!(因为程序有逻辑:如果该行存在就只能update,不能insert)

呵呵,这招大家可以记住,在测试环境中可能用的到。。。。。。

``` #include <iostream> #include <cstring> #include <algorithm> using namespace std; const int N = 110; bool wolf[N]; int a[N]; vector<int> liar; int main() { int n; cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=n;i++){ for(int j=i+1;j<=n;j++){ vector<int> liar; memset(wolf,0,sizeof wolf); wolf[i]=wolf[j]=true; for(int k=1;k<=n;k++){ if(wolf[abs(a[k])]^(a[k]<0)){ liar.push_back(k); } } if(liar.size()==2&&wolf[liar[0]]^wolf[liar[1]]){ for(int i=1;i<=n;i++){ if(wolf[i]) cout<<i<<' '; } return 0; } } } cout<<"No Solution"; return 0; }```“狼人杀”游戏分为狼人、好人两大阵营。 在一局“狼人杀”游戏中: 1家说:“2 号是狼人”; 2 号家说:“3 号是好人”; 3 号家说:“4 号是狼人”; 4 号家说:“5 号是好人”; 5 号家说:“4 号是好人”。 已知这 5 名家中有 2 人扮演狼人角色,有 2 人说的不是实话,有且只有一只狼在说谎。 扮演狼人角色的是哪两号家? 本题是这个问题的升级版: 已知 N 名家中有 2 人扮演狼人角色,有 2 人说的不是实话,有且只有一只狼在说谎。 要求你找出扮演狼人角色的是哪几号家? 输入格式 输入在第一行中给出一个正整数 N 。 随后 N 行,第 i 行给出第 i 号家说的话(1≤i≤N ),即一个家编号,用正号表示好人,负号表示狼人。 输出格式 如果有解,在一行中按递增顺序输出 2 个狼人的编号,其间以空格分隔,行首尾不得有多余空格。 如果解不唯一,则输出最小序列解 —— 即对于两个序列 A=a[1],…,a[M] B=b[1],…,b[M],若存在 0≤k<M 使得 a[i]=b[i](i≤k),且 a[k+1]<b[k+1],则称序列 A 小于序列 B 。 若无解则输出 No Solution。 数据范围 5≤N≤100 输入样例1: 5 -2 +3 -4 +5 +4 输出样例11 4 输入样例2: 6 +6 +3 +1 -5 -2 +4 输出样例2(解不唯一): 1 5 输入样例3: 5 -2 -3 -4 -5 -1 输出样例3: No Solution
03-20
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值