jjzjj

algorithms

全部标签

algorithm - 结构 slice 使用太多内存

我试图解决thisBFS的问题,但是对于输入“99100”,我的程序使用了超过260Mb并且在线判断系统抛出MEMORY_LIMIT_EXCEEDED。我想问题是我使用QUEUE的方式。那么你认为问题是什么?又该如何解决?这是我的代码。提前致谢!:packagemainimport("fmt")typepairstruct{nnintddint}funcmain(){varn,mintfmt.Scanf("%d%d",&n,&m)ifn>=m{fmt.Println(n-m)}else{device:=make([]pair,1)device[0]=pair{n,0}ans:=0for

algorithm - 从N个元素的 slice 生成K个元素的算法

我正在尝试从Go中的thisStackoverflowquestion移植算法。我正在尝试使用的算法如下:给定任意长度的字符串slice和“深度”,找到原始slice中长度为深度的元素的所有组合。例如,如果给定一个包含A,B,C,D,E和F且深度为3的slice,则结果应为:[A,B,C][A,B,D][A,B,E][A,B,F][A,C,D][A,C,E][A,C,F][A,D,E][A,D,F][A,E,F][B,C,D][B,C,E][B,C,F][B,D,E][B,D,F][B,E,F][C,D,E][C,D,F][C,E,F][D,E,F]我已经尝试在上述Go语言中实现一些建

algorithm - 计算 Go 中给定字符串中句子中的最大单词数

我是Go的新手...我正在寻找新的方法来优化和/或修复此算法以计算给定字符串中句子中的最大单词数。句子以“?”结尾要么'!'要么'。'并且函数应该返回int>=0。//MaxWordsInSentences-returnmaxwordsinonesentencesfuncMaxWordsInSentences(Sstring)(resultint){r,_:=regexp.Compile("[.||?||!]")count:=strings.Count(S,".")+strings.Count(S,"!")+strings.Count(S,"?")//Totalsentacesfori

algorithm - 转到 : longest common subsequence back tracing

我的代码适用于计算LCS的长度,但我在以下链接中应用相同的代码来读取LCS,http://en.wikipedia.org/wiki/Longest_common_subsequence_problem但缺少一些字符串。你能告诉我我错过了什么吗?GooglePlayground链接:http://play.golang.org/p/qnIWQqzAf5funcBack(table[][]int,str1,str2string,i,jint)string{ifi==0||j==0{return""}elseifstr1[i]==str2[j]{returnBack(table,str1,

algorithm - Golang 代码对于 Hackerrank 来说太慢了

我一直在努力解决这个Hackerrank挑战:Link这是你必须做的:你有一个大矩阵:111111111111111111111111111011和一个小矩阵:111111110你必须找出小矩阵是否存在于大矩阵中。最多有5个测试用例,每个矩阵的最大尺寸为1000x1000,我需要在4秒内解决这个问题。我的代码在最大可能输入时超时,我想也许我扫描矩阵的方式太慢了。这是我的代码:packagemainimport("fmt""strconv""strings")funcmain(){vart,rL,cL,rS,cS,tempintvarsstringvarsl[]stringvarmxL,

algorithm - Golang 读取文本文件并从其中一个读入值中取出一部分

在我下面的代码中,我希望读取一个文本文件,每行填充了一个数字1-5。我希望它扫描该行并读取其中一个值,看看它是否//Thisisthepartoftheprogramthatwillreadfromatextfilenamed"file"//Toseewhatnumberswereselectedlasttimesotherecipeforweektwocanbe//acompletelynewrecipegroupof5f,err:=os.Open("file")iferr!=nil{fmt.Println(err)}for{varzintvarnintn,err=fmt.Fscan

algorithm - 如何在不使用 "/"和 "%"的情况下有效地获得商和余数?

我已经实现了一个简单的函数,它在除数是10的幂时返回商和余数:funcgetQuotientAndRemainder(numint64,digitsuint)(int64,int64){divisor:=int64(math.Pow(10,float64(digits)))ifnum>=divisor{returnnum/divisor,num%divisor}else{return0,num}}只是好奇,除了直接使用/和%运算符,还有没有更好的算法来求商和余数?或者仅在除数是10的幂的情况下? 最佳答案 returnnum/div

Go 并发 : Chudnovky's algorithm, 比同步慢

最近在friend的推荐下开始学习围棋。到目前为止,我很喜欢它,但我写了(我认为会是)轻量级并发的完美示例,并得到了令人惊讶的结果......所以我怀疑我做错了什么,或者我是误解了goroutines的成本。我希望这里的一些gophers可以提供见解。我使用goroutines和简单的同步执行在Go中编写了Chudnovsky的算法。我假设,每个计算都独立于其他计算,同时运行至少会快一点。注意:我在第5代i7上运行它,所以如果goroutine像我被告知的那样被多路复用到线程上,这应该是并发的和并行的。packagemainimport("fmt""math""strconv""tim

高语 : "No common algorithm for key exchange" error

我是GoLang的新手,我正在尝试使用go连接到远程服务器。但是我不断收到以下错误Failedtodial:ssh:handshakefailed:ssh:nocommonalgorithmforkeyexchange;clientoffered:[curve2****-sh****@libssh.org****-sha*-nis****ecdh-sha2-nistp384ecdh-sha2-nistp****diffie-hellman-group14-sha1diffie-hellman-group1-sha1],serveroffered:[diffie-hellman-grou

algorithm - 如何设计输入小于10时的进度条逻辑?

我正在解析数组中的字符串并在解析字符串时显示进度。这是我的逻辑,但它不适用于小于10的输入。在100*i/(lineLen-1)函数的初始部分已经处理了除以零progress:=0fori:=0;i=progress{fmt.Printf("--%d%s--",progress,"%")progress+=10}} 最佳答案 我知道您需要将所有百分比降低到10的倍数。您可以尝试以下操作。lineLen:=4progress:=0fori:=0;i=progress{roundedProgress:=(actualProgress/1