我正在使用此代码生成随机数字序列:
var sequence = Enumerable.Range(0, 9).OrderBy(n => n * n * (new Random()).Next());
Run Code Online (Sandbox Code Playgroud)
一切都很好,直到我需要不止一个序列,在这段代码中我调用例程10次,结果是我的问题,所有序列都是相同的.
int i = 0;
while (i<10)
{
Console.Write("{0}:",i);
var sequence = Enumerable.Range(0, 9).OrderBy(n => n * n * (new Random()).Next());
sequence.ToList().ForEach(x=> Console.Write(x));
i++;
Console.WriteLine();
}
Run Code Online (Sandbox Code Playgroud)
有人能给我一些实际生成不同序列的提示吗?希望使用LINQ
我有一个seq<'A>.我想将它映射到a seq<(int, 'A)>,其中整数是从0开始的自动生成的值序列.我知道我可以用可变计数器和循环来做这个,但是有更优雅的方法来做到这一点,也许使用Seq.map?
我期待这样的事情range,而是一个可以让我指定的开始和结束值,与我多少个号码需要,我想以类似的方式来使用集合沿range中使用for loops.
我试图在顶级编码器上解决问题zig zag序列.我的代码的时间复杂度是O(n*n).如何将其减少为O(n)或O(nlog(n))伪代码或算法的解释对我来说真的很有用这是问题陈述.问题陈述
如果连续数字之间的差异在正数和负数之间严格交替,则数字序列称为Z字形序列.第一个差异(如果存在)可以是正面的也可以是负面的.具有少于两个元素的序列通常是Z字形序列.
例如,1,7,4,9,2,5是Z字形序列,因为差异(6,-3,5,-7,3)交替为正和负.相比之下,1,4,7,2,5和1,7,4,5,5不是Z字形序列,第一个是因为它的前两个差异是正的,第二个是因为它的最后差异是零.
给定一系列整数序列,返回序列的最长子序列的长度,该序列是Z字形序列.通过从原始序列中删除一些元素(可能为零)来获得子序列,剩余的元素保持其原始顺序.
这是我的代码
#include <iostream>
#include<vector>
#include<cstring>
#include<cstdio>
using namespace std;
class ZigZag
{
public:
int dp[200][2];
void print(int n)
{
for(int i=0;i<n;i++)
{
cout<<dp[i][0]<<endl;
}
}
int longestZigZag(vector<int> a)
{
int n=a.size();
//int dp[n][2];
for(int i=0;i<n;i++)
{
cout<<a[i]<<" "<<"\t";
}
cout<<endl;
memset(dp,sizeof(dp),0);
dp[0][1]=dp[0][0]=1;
for(int i=1;i<n;i++)
{
dp[i][1]=dp[i][0]=1;
for(int j=0;j<i;j++)
{
if(a[i]<a[j])
{
dp[i][0]=max(dp[j][1]+1,dp[i][0]);
}
if(a[j]<a[i])
{
dp[i][1]=max(dp[j][0]+1,dp[i][1]);
}
}
cout<<dp[i][1]<<"\t"<<dp[i][0]<<" "<<i<<endl;
//print(n);
}
cout<<dp[n-1][0]<<endl;
return max(dp[n-1][0],dp[n-1][1]);
}
};
Run Code Online (Sandbox Code Playgroud) 我一直收到错误:无法将预期类型'Bool'与实际类型'[t0]'匹配.我正在尝试获取字符串的用户输入,然后以反向ORDER输出许多字符串.
输入示例:
HI1
HI2
Run Code Online (Sandbox Code Playgroud)
示例输出:
HI2
HI1
Run Code Online (Sandbox Code Playgroud)
我的代码:
Back :: Int -> IO()
Back x = do line <- sequence_[getLine|[1..x]]
mapM_ print (reverse line)
Run Code Online (Sandbox Code Playgroud) 我有一串数字:
n1 = c(1, 1, 0, 6, 0, 0, 10, 10, 11, 12, 0, 0, 19, 23, 0, 0)
Run Code Online (Sandbox Code Playgroud)
我需要将0与相应的数字替换为"后面"以获得,同时将0留在尾部(因为它们背后没有任何东西):
n2 = c(1, 1, 6, 6, 10, 10, 10, 10, 11, 12, 19, 19, 19, 23, 0, 0)
Run Code Online (Sandbox Code Playgroud)
我如何从n1到n2?
这似乎比我之前提到的问题要难得多:
flodel提出了一个优雅的解决方案:
n2 <- n1[cummax(seq_along(n1) * (n1 != 0))]
Run Code Online (Sandbox Code Playgroud)
但是,这个解决方案在这里不起作用; 我已经尝试但未能调整代码.
别人能想出一个优雅的解决方案吗?
提前致谢!
我想把一个元素放在列表中间,所以我做了:
update myPosition myValue $ fromList myList
Run Code Online (Sandbox Code Playgroud)
现在,我有一种类型,Seq a但我需要整个a([a])列表.如何从此行中提取值以返回整个列表myValue?
Seq是来自Data.Sequence.
我从网站上检查过,这称为单峰置换,它定义为只有一个局部最大值的序列.例如n = 5:
12345
12354
12453
12543
13452
13542
14532
15432
23451
23541
24531
25431
34521
35421
45321
54321
Run Code Online (Sandbox Code Playgroud)
是否有算法来获得第k个单峰排列?
我正在尝试使用此过滤器库,并从以下代码段获取未经测试的修改警告.
while (--numSamples >= 0)
*dest++ = state.process(*dest, *this);
Run Code Online (Sandbox Code Playgroud)
这样就可以在SO上查看类似的问题,因为dest正在修改并在同一命令中访问.所以,我想预期的功能如下...
while (--numSamples >= 0) {
*dest = state.process(*dest, *this);
*dest++;
}
Run Code Online (Sandbox Code Playgroud)
但是,这为后增量提供了一个新的,更好奇的警告"警告:表达结果未使用".为什么这个新警告,我应该如何正确解决这个问题?
我有一个Clojure功能:
(def obseq
(fn []
(let [a 0
b 1
c 2]
(println (seq '(a b c))))))
Run Code Online (Sandbox Code Playgroud)
它输出:
(a b c)
Run Code Online (Sandbox Code Playgroud)
我希望它输出一个包含a,b和c值的序列,而不是它们的名字.
期望的输出:
(1 2 3)
Run Code Online (Sandbox Code Playgroud)
我该如何实现?