网易首页 > 网易号 > 正文 申请入驻

2023-10-21:用go语言,一共有三个服务A、B、C,网络延时分别为a

0
分享至

2023-10-21:用go语言,一共有三个服务A、B、C,网络延时分别为a、b、c

并且一定有:1 <= a <= b <= c <= 10^9

但是具体的延时数字丢失了,只有单次调用的时间

一次调用不可能重复使用相同的服务,

一次调用可能使用了三个服务中的某1个、某2个或者全部3个服务

比如一个调用的时间,T = 100

100的延时可能来自以下7种情况:

a = 100,这次调用可能单独使用了A

b = 100,这次调用可能单独使用了B

c = 100,这次调用可能单独使用了C

a + b = 100,这次调用可能组合使用了A、B

a + c = 100,这次调用可能组合使用了A、C

b + c = 100,这次调用可能组合使用了B、C

a + b + c = 100,这次调用可能组合使用了A、B、C全部服务

那么可想而知,如果给的调用时间足够多,是可以猜测出a、b、c的

给定一个数组times,长度为n,并且一定有4 <= n <= 7

times[i] = s,表示i号调用用时s,而且times中一定都是正数且没有重复值。

请根据n次调用,猜测出a、b、c三元组可能的情况数。

如果任何a、b、c都无法匹配上给定的调用耗时,返回0,

测试的次数T <= 100,

也就是说,一共最多给定100个数组,每一次让你返回a、b、c三元组可能的情况数。

来自招商银行。

来自左程云。

答案2023-10-21:

为什么用讯飞星火?

这次代码生成用的讯飞星火,生成完后,要略微修改下代码才能通过。另外c代码的生成,一直有问题,索性就不管了。

之前一直用的chatgpt,但那个地址不能用了,所以用讯飞星火试水。

文心一言以及其他产品,我也试了下,java代码太多,文心一言无法转换成其他代码,都有各自的问题,所以只能放弃。

大体过程如下:

1.首先,定义一个函数,接受一个整数数组作为参数,并返回可能的情况数。

ways

times

2.在函数中,创建一个长度为7的整数数组,用于记录服务的延时情况。初始化为全0。

ways

status

3.创建一个空的map,用于存储可能的三元组情况。

ans

4.调用函数,传入、0、和作为参数。

process

times

status

ans

5.返回的长度,即为可能的情况数。

ans

6.在函数中,判断是否已经遍历完了数组,如果是,则进行下面的操作:

process

times

6.1.创建三个变量、、,用于存储可能的延时情况。

a

b

c

6.2.调用函数,获取当前数组中非零元素的个数,存储在变量中。

counts

status

count

6.3.根据的值,进行不同的情况判断:

count

6.3.1.如果为0,说明三个服务都没有使用过,根据给定的关系式计算出、、的值。

count

a

b

c

6.3.2.如果为1,说明只有一个服务被使用过,根据给定的关系式计算出、、的值。

count

a

b

c

6.3.3.如果为2,说明有两个服务被使用过,根据给定的关系式计算出、、的值。

count

a

b

c

6.3.4.如果为3,说明三个服务都被使用过,直接将数组中的值赋给、、。

count

status

a

b

c

6.4.调用函数,判断当前的、、是否满足条件,如果满足,则将其作为键存入中。

verify

a

b

c

ans

7.如果没有遍历完数组,则进行递归操作:

times

7.1.遍历数组,找到第一个为0的位置。

status

7.2.将当前遍历到的元素赋值给数组的该位置。

times

status

7.3.递归调用函数,传入更新后的数组,,作为参数。

process

status

i+1

ans

7.4.将数组的该位置重新置为0,进行下一次遍历。

status

8.在函数中,遍历数组,统计非零元素的个数,并返回该个数。

counts

status

9.在函数中,根据给定的条件,判断、、是否满足条件,如果满足则返回true,否则返回false。

verify

a

b

c

go完整代码如下:

packagemain
import"fmt"
funcways(times[]int)int{
status:=[]int{0,0,0,0,0,0,0}
ans:=make(map[string]struct{})
process(times,0,status,ans)
returnlen(ans)
}
funcprocess(times[]int,iint,status[]int,ansmap[string]struct{}){
ifi==len(times){
a,b,c:=0,0,0
count:=counts(status)
ifcount==0{
a=(status[3]+status[4]-status[5])/2
b=(status[3]+status[5]-status[4])/2
c=(status[4]+status[5]-status[3])/2
}elseifcount==1{
ifstatus[0]!=0{
a=status[0]
ifstatus[3]!=0{
b=status[3]-a
}
ifstatus[4]!=0{
c=status[4]-a
}
ifstatus[5]!=0{
ifb!=0&&c==0{
c=status[5]-b
}
ifc!=0&&b==0{
b=status[5]-c
}
}
}elseifstatus[1]!=0{
b=status[1]
ifstatus[3]!=0{
a=status[3]-b
}
ifstatus[5]!=0{
c=status[5]-b
}
ifstatus[4]!=0{
ifa!=0&&c==0{
c=status[4]-a
}
ifc!=0&&a==0{
a=status[4]-c
}
}
}else{
c=status[2]
ifstatus[4]!=0{
a=status[4]-c
}
ifstatus[5]!=0{
b=status[5]-c
}
ifstatus[3]!=0{
ifa!=0&&b==0{
b=status[3]-a
}
ifb!=0&&a==0{
a=status[3]-b
}
}
}
}elseifcount==2{
ifstatus[0]!=0{
a=status[0]
}
ifstatus[1]!=0{
b=status[1]
}
ifstatus[2]!=0{
c=status[2]
}
ifa==0{
ifstatus[3]!=0{
a=status[3]-b
}elseifstatus[4]!=0{
a=status[4]-c
}else{
a=status[6]-b-c
}
}elseifb==0{
ifstatus[3]!=0{
b=status[3]-a
}elseifstatus[5]!=0{
b=status[5]-c
}else{
b=status[6]-a-c
}
}else{
ifstatus[4]!=0{
c=status[4]-a
}elseifstatus[5]!=0{
c=status[5]-b
}else{
c=status[6]-a-b
}
}
}else{
a=status[0]
b=status[1]
c=status[2]
}
ifverify(status,a,b,c){
ans[fmt.Sprint(a)+"_"+fmt.Sprint(b)+"_"+fmt.Sprint(c)]=struct{}{}
}
}else{
forj:=0;j<7;j++{
ifstatus[j]==0{
status[j]=times[i]
process(times,i+1,status,ans)
status[j]=0
}
}
}
}
funccounts(status[]int)int{
count:=0
fori:=0;i<3;i++{
ifstatus[i]!=0{
count++
}
}
returncount
}
funcverify(status[]int,a,b,cint)bool{
ifa<=0||b<=0||c<=0||a>b||b>c{
returnfalse
}
ifstatus[0]!=0&&status[0]!=a{
returnfalse
}
ifstatus[1]!=0&&status[1]!=b{
returnfalse
}
ifstatus[2]!=0&&status[2]!=c{
returnfalse
}
ifstatus[3]!=0&&status[3]!=a+b{
returnfalse
}
ifstatus[4]!=0&&status[4]!=a+c{
returnfalse
}
ifstatus[5]!=0&&status[5]!=b+c{
returnfalse
}
ifstatus[6]!=0&&status[6]!=a+b+c{
returnfalse
}
returntrue
}
funcmain(){
times:=[]int{1,2,3,4,5,6,7}
fmt.Println(ways(times))
}

rust完整代码如下:

usestd::collections::HashSet;
fnmain(){
letstatus=[1,2,3,4,5,6,7];
letans=ways(&status);
println!("Hello,World{}",ans);
}
fnways(times:&[i32])->usize{
letmutstatus=[0;7];
letmutans=std::collections::HashSet::new();
process(times,0,&mutstatus,&mutans);
ans.len()
}
fnprocess(times:&[i32],i:usize,status:&mut[i32],ans:&mutHashSet){
ifi==times.len(){
leta=ifstatus[0]!=0{
status[0]
}else{
(status[3]+status[4]-status[5])/2
};
letb=ifstatus[1]!=0{
status[1]
}else{
(status[3]+status[5]-status[4])/2
};
letc=ifstatus[2]!=0{
status[2]
}else{
(status[4]+status[5]-status[3])/2
};
ifverify(status,a,b,c){
leta_str=a.to_string();
letb_str=b.to_string();
letc_str=c.to_string();
ans.insert(format!("{}-{}-{}",a_str,b_str,c_str));
}
}else{
forjin0..7{
ifstatus[j]==0{
status[j]=times[i];
process(times,i+1,status,ans);
status[j]=0;
}
}
}
}
fnverify(s:&[i32],a:i32,b:i32,c:i32)->bool{
ifa<=0||b<=0||c<=0||a>b||b>c{
returnfalse;
}
ifs[0]!=0&&s[0]!=a{
returnfalse;
}
ifs[1]!=0&&s[1]!=b{
returnfalse;
}
ifs[2]!=0&&s[2]!=c{
returnfalse;
}
ifs[3]!=0&&s[3]!=a+b{
returnfalse;
}
ifs[4]!=0&&s[4]!=a+c{
returnfalse;
}
ifs[5]!=0&&s[5]!=b+c{
returnfalse;
}
ifs[6]!=0&&s[6]!=a+b+c{
returnfalse;
}
true
}

c++完整代码如下:

#include
#include
#include
#include
usingnamespacestd;
boolverify(std::vectors,inta,intb,intc);
intcounts(vectorstatus);
voidprocess(vectortimes,inti,vector&status,unordered_set

&ans);
intways(vectortimes){
vectorstatus(7);
unordered_set

ans;
process(times,0,status,ans);
returnans.size();
}
voidprocess(vectortimes,inti,vector&status,unordered_set

&ans){
if(i==times.size()){
inta=0;
intb=0;
intc=0;
intcnt=counts(status);
if(cnt==0){
a=(status[3]+status[4]-status[5])/2;
b=(status[3]+status[5]-status[4])/2;
c=(status[4]+status[5]-status[3])/2;
}
elseif(cnt==1){
if(status[0]!=0){
a=status[0];
if(status[3]!=0){
b=status[3]-a;
}
if(status[4]!=0){
c=status[4]-a;
}
if(status[5]!=0){
if(b!=0&&c==0){
c=status[5]-b;
}
if(c!=0&&b==0){
b=status[5]-c;
}
}
}
elseif(status[1]!=0){
b=status[1];
if(status[3]!=0){
a=status[3]-b;
}
if(status[5]!=0){
c=status[5]-b;
}
if(status[4]!=0){
if(a!=0&&c==0){
c=status[4]-a;
}
if(c!=0&&a==0){
a=status[4]-c;
}
}
}
else{
c=status[2];
if(status[4]!=0){
a=status[4]-c;
}
if(status[5]!=0){
b=status[5]-c;
}
if(status[3]!=0){
if(a!=0&&b==0){
b=status[3]-a;
}
if(b!=0&&a==0){
a=status[3]-b;
}
}
}
}
elseif(cnt==2){
if(status[0]!=0){
a=status[0];
}
if(status[1]!=0){
b=status[1];
}
if(status[2]!=0){
c=status[2];
}
if(a==0){
if(status[3]!=0){
a=status[3]-b;
}
elseif(status[4]!=0){
a=status[4]-c;
}
else{
a=status[6]-b-c;
}
}
elseif(b==0){
if(status[3]!=0){
b=status[3]-a;
}
elseif(status[5]!=0){
b=status[5]-c;
}
else{
b=status[6]-a-c;
}
}
else{
if(status[4]!=0){
c=status[4]-a;
}
elseif(status[5]!=0){
c=status[5]-b;
}
else{
c=status[6]-a-b;
}
}
if(verify(status,a,b,c)){
ans.insert(to_string(a)+"_"+to_string(b)+"_"+to_string(c));
}
}
else{
a=status[0];
b=status[1];
c=status[2];
}
if(verify(status,a,b,c)){
ans.insert(to_string(a)+"_"+to_string(b)+"_"+to_string(c));
}
}
else{
for(intj=0;j<7;j++){
if(status[j]==0){
status[j]=times[i];
process(times,i+1,status,ans);
status[j]=0;
}
}
}
}
intcounts(vectorstatus){
intcnt=0;
for(inti=0;i<3;i++){
if(status[i]!=0){
cnt++;
}
}
returncnt;
}
boolverify(std::vectors,inta,intb,intc){
if(a<=0||b<=0||c<=0||a>b||b>c){
returnfalse;
}
if(s[0]!=0&&s[0]!=a){
returnfalse;
}
if(s[1]!=0&&s[1]!=b){
returnfalse;
}
if(s[2]!=0&&s[2]!=c){
returnfalse;
}
if(s[3]!=0&&s[3]!=a+b){
returnfalse;
}
if(s[4]!=0&&s[4]!=a+c){
returnfalse;
}
if(s[5]!=0&&s[5]!=b+c){
returnfalse;
}
if(s[6]!=0&&s[6]!=a+b+c){
returnfalse;
}
returntrue;
}
intmain(){
std::vectorstatus={1,2,3,4,5,6,7};
intans=ways(status);
std::cout<<"Hello,World"<return0;
}

声明:个人原创,仅供参考

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
爆冷杀入“阿里全球数学竞赛”的中专女生:梦想就是考大学

爆冷杀入“阿里全球数学竞赛”的中专女生:梦想就是考大学

澎湃新闻
2024-06-13 20:48:30
唯一在世的一代领导人,曾任政治局常委,如今107岁

唯一在世的一代领导人,曾任政治局常委,如今107岁

深度知局
2024-06-13 17:41:13
湖南:小伙捧鲜花表白女技师,做足疗一见钟情,网友:长得很哇塞

湖南:小伙捧鲜花表白女技师,做足疗一见钟情,网友:长得很哇塞

百晓史
2024-06-02 09:09:36
北美人都被印度人逼疯了!

北美人都被印度人逼疯了!

趣说世界哈
2024-06-14 07:31:27
安徽将迎大雨、暴雨!

安徽将迎大雨、暴雨!

中安在线
2024-06-16 07:53:07
澳门赌场免费小食停止提供,澳门“演唱会经济”令香港相形见绌

澳门赌场免费小食停止提供,澳门“演唱会经济”令香港相形见绌

文雅笔墨
2024-06-15 23:59:13
深圳市委宣传部原常务副部长陈金海,有新职!

深圳市委宣传部原常务副部长陈金海,有新职!

南方都市报
2024-06-15 22:18:10
144小时过境免签,回国后后遗症集体爆发,文明灯塔如何持续点亮

144小时过境免签,回国后后遗症集体爆发,文明灯塔如何持续点亮

囧囧智说
2024-06-15 14:20:33
瑞士3-1匈牙利!赢欧洲杯开门红,埃比舍尔传射,索博送助攻

瑞士3-1匈牙利!赢欧洲杯开门红,埃比舍尔传射,索博送助攻

侃球熊弟
2024-06-15 22:52:25
狼子野心!赖清德试图对大陆用缓兵之计,难掩“台独”本质!

狼子野心!赖清德试图对大陆用缓兵之计,难掩“台独”本质!

陆弃
2024-06-15 10:32:46
御姐风!太高级!要不起的感觉

御姐风!太高级!要不起的感觉

梧州生活宝
2024-05-22 23:14:03
英媒奉劝美国:与其把精力放在压制中国科学上,不如放在推动自己进步上

英媒奉劝美国:与其把精力放在压制中国科学上,不如放在推动自己进步上

参考消息
2024-06-15 14:03:26
“税务倒查30年”孰是孰非,看一下法律依据是什么,不妨讨论一下

“税务倒查30年”孰是孰非,看一下法律依据是什么,不妨讨论一下

涛涛生活搞笑
2024-06-15 17:56:11
就业率爆了!2024年应届生该如何应对?

就业率爆了!2024年应届生该如何应对?

帝都观日记
2024-06-16 00:15:34
欧倩怡离婚即与6位男士约会,首开腔曝郭晋安在她重病时冷漠自私

欧倩怡离婚即与6位男士约会,首开腔曝郭晋安在她重病时冷漠自私

娱乐白名单
2024-06-15 11:15:34
中国国民党副主席连胜文:在台湾,多数人不支持“台独”

中国国民党副主席连胜文:在台湾,多数人不支持“台独”

新京报
2024-06-16 07:28:10
乌克兰军队哈尔科夫北部发动反攻,解放了大片被占领阵地

乌克兰军队哈尔科夫北部发动反攻,解放了大片被占领阵地

夜相思
2024-06-16 11:23:14
你还买电动车吗?国际能源署警告:到2030年末,全球石油市场将面临严重过剩【附全球石油市场供需现状分析】

你还买电动车吗?国际能源署警告:到2030年末,全球石油市场将面临严重过剩【附全球石油市场供需现状分析】

前瞻网
2024-06-13 17:08:14
银行领导把女员工的表白视频发到工作群,是想炫耀吗?

银行领导把女员工的表白视频发到工作群,是想炫耀吗?

读史
2024-06-15 07:00:52
美国总统拜登批准俄克拉何马州重大灾难声明

美国总统拜登批准俄克拉何马州重大灾难声明

财联社
2024-06-15 10:10:30
2024-06-16 12:42:44
moonfdd
moonfdd
福大大架构师每日一题
423文章数 7关注度
往期回顾 全部

科技要闻

iPhone 16会杀死大模型APP吗?

头条要闻

媒体:普京开出的停火条件有重大变化 已亮出战略底牌

头条要闻

媒体:普京开出的停火条件有重大变化 已亮出战略底牌

体育要闻

没人永远年轻 但青春如此无敌还是离谱了些

娱乐要闻

上影节红毯:倪妮好松弛,娜扎吸睛

财经要闻

打断妻子多根肋骨 上市公司创始人被公诉

汽车要闻

售17.68万-21.68万元 极狐阿尔法S5正式上市

态度原创

亲子
房产
数码
艺术
公开课

亲子要闻

“快哭,不然阿姨打你哦”新生儿缺氧无法哭出声音

房产要闻

万华对面!海口今年首宗超百亩宅地,重磅挂出!

数码要闻

华为新款MatePad平板来了:支持北斗卫星消息

艺术要闻

穿越时空的艺术:《马可·波罗》AI沉浸影片探索人类文明

公开课

近视只是视力差?小心并发症

无障碍浏览 进入关怀版