新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 142 1...135136137138139140141142143144145146147148149...1953 新评论 Mislaid 2017.03.07 05:38 #1411 Artyom Trishkin:没有:)))1,1,1,2,3,3,2,1,4,4,5是相同颜色的数字的数量。Alexey Kozitsyn 的意思是:在一个排序的数组中。一个序列中相同值的最大数量? Artyom Trishkin 2017.03.07 05:42 #1412 Mislaid: 阵列。1,1,1,2,3,3,2,1,4,4,5分拣。1,1,1,1, 1,2, 2, 3,3,4,4,5输出是4个匹配的数字值(数字5在一个实例中不是一个匹配值)。 [删除] 2017.03.07 05:51 #1413 Artyom Trishkin: 阵列。1,1,1,2,3,3,2,1,4,4,5排序方式。1,1,1, 1,2, 2, 3,3,4,4,5输出是4个匹配的数字值(单一副本中的数字5没有匹配任何东西)。 这样一来,大致是:确定序列中存在重复的数字的数量。 Artyom Trishkin 2017.03.07 06:01 #1414 Alexey Kozitsyn: 那么它听起来就像:确定一个序列中具有重复的数字的数量。 也许。目前,这不是关于措辞的问题,而是关于解决方案的问题。我坐在这里,解决... Maxim Kuznetsov 2017.03.07 06:30 #1415 Artyom Trishkin:也没有。有四个已知的未知号码。你需要找到 重复数字的数量,就像我第一篇文章 中的例子一样。如果顺序不重要,数字是整数,范围是已知的,那么你可以通过创建一个计数器数组来进行O(size)的计数。ArrayResize(counter,100);ArrayInitialize(counter,0);for(int i=ArraySize(source)-1;i>=0;i--) { counter[source[i]]++;}int pos=ArrayMaximum(counter);PrintFormat("Чаще всего встречалось число %d, аж %d раз",pos,source[pos]); 否则,真的要进行排序,并从那里选择最长的相同数字序列。 Artyom Trishkin 2017.03.07 06:50 #1416 Maxim Kuznetsov:如果顺序不重要,数字是整数,范围是已知的,那么你可以简单地通过创建一个计数器数组来进行O(size)计算。ArrayResize(counter,100);ArrayInitialize(counter,0);for(int i=ArraySize(source)-1;i>=0;i--) { counter[source[i]]++;}int pos=ArrayMaximum(counter);PrintFormat("Чаще всего встречалось число %d, аж %d раз",pos,source[pos]); 否则,真的--排序,并从那里选择最长的相同序列。 所以 "否则 "是一个任何类型的数字数组。所以它是一个模板函数。好了,分类和搜索。然而,我正在慢慢地做这件事。 fxsaber 2017.03.07 07:00 #1417 Artyom Trishkin: 也许。目前,这不是关于措辞的问题,而是关于解决方案的问题。我坐在这里,解决... 这很奇怪。 Artyom Trishkin 2017.03.07 07:13 #1418 fxsaber: 很奇怪。 你的选项总是给出1。琢磨的时间比自己想出来的时间要长。这就是所有的奇怪之处;) fxsaber 2017.03.07 07:35 #1419 Artyom Trishkin: 你的选项总是给出1。琢磨的时间比自己想出来的时间要长。这就是所有的奇怪之处;) 按原样运行。template <typename T>int Strange( const T &InArray[] ){ int Res = 1; T Array[]; const int Size = ArraySize(InArray); if ((ArrayCopy(Array, InArray) == Size) && ArraySort(Array)) { int Tmp = 1; ArrayPrint(Array); for (int i = 1; i < Size; i++) { if (Array[i - 1] != Array[i]) { if (Tmp > Res) Res = Tmp; Tmp = 0; } Tmp++; } } return(Res);}void OnStart(){ int Array[] = {1, 2, 3, 1, 2, 1, 2, 2}; Print(Strange(Array));} 它是有效的。 Vitaly Muzichenko 2017.03.07 07:38 #1420 这个人似乎也是。void OnTick() { int Arr[]={1, 2, 4, 4, 2, 1, 2, 2, 1, 4, 1, 4, 3, 3, 3, 4, 3, 3, 1, 3, 4, 3, 3}; Comment( GetM(Arr) ); }int GetM(int &Mas[]) { int c=0,cd=0,res=-1; ArraySort(Mas); int ArrSize= ArraySize(Mas); for(int i=0; i<ArrSize; i++) { for(int x=i; x<ArrSize; x++) { if(Mas[i]==Mas[ArrayMinimum(Mas,WHOLE_ARRAY,x)]) c++; } if(c>=cd) { // ищем первое большее ">" или максимально большее ">=" при одинаковом количестве cd=c; // количество совпадений res=Mas[i]; // число } c=0; } return( res /*cd*/); // число|количество } Any questions from newcomers Sort multiple arrays Single array calculation during 1...135136137138139140141142143144145146147148149...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
没有:)))
1,1,1,2,3,3,2,1,4,4,5
是相同颜色的数字的数量。
Alexey Kozitsyn 的意思是:在一个排序的数组中。一个序列中相同值的最大数量?
1,1,1,2,3,3,2,1,4,4,5
分拣。
1,1,1,1, 1,2, 2, 3,3,4,4,5
输出是4个匹配的数字值(数字5在一个实例中不是一个匹配值)。
阵列。
1,1,1,2,3,3,2,1,4,4,5
排序方式。
1,1,1, 1,2, 2, 3,3,4,4,5
输出是4个匹配的数字值(单一副本中的数字5没有匹配任何东西)。
那么它听起来就像:确定一个序列中具有重复的数字的数量。
也没有。
有四个已知的未知号码。你需要找到 重复数字的数量,就像我第一篇文章 中的例子一样。
如果顺序不重要,数字是整数,范围是已知的,那么你可以通过创建一个计数器数组来进行O(size)的计数。
ArrayResize(counter,100);
ArrayInitialize(counter,0);
for(int i=ArraySize(source)-1;i>=0;i--) {
counter[source[i]]++;
}
int pos=ArrayMaximum(counter);
PrintFormat("Чаще всего встречалось число %d, аж %d раз",pos,source[pos]);
如果顺序不重要,数字是整数,范围是已知的,那么你可以简单地通过创建一个计数器数组来进行O(size)计算。
ArrayResize(counter,100);
ArrayInitialize(counter,0);
for(int i=ArraySize(source)-1;i>=0;i--) {
counter[source[i]]++;
}
int pos=ArrayMaximum(counter);
PrintFormat("Чаще всего встречалось число %d, аж %d раз",pos,source[pos]);
也许。目前,这不是关于措辞的问题,而是关于解决方案的问题。我坐在这里,解决...
很奇怪。
你的选项总是给出1。琢磨的时间比自己想出来的时间要长。这就是所有的奇怪之处;)
int Strange( const T &InArray[] )
{
int Res = 1;
T Array[];
const int Size = ArraySize(InArray);
if ((ArrayCopy(Array, InArray) == Size) && ArraySort(Array))
{
int Tmp = 1;
ArrayPrint(Array);
for (int i = 1; i < Size; i++)
{
if (Array[i - 1] != Array[i])
{
if (Tmp > Res)
Res = Tmp;
Tmp = 0;
}
Tmp++;
}
}
return(Res);
}
void OnStart()
{
int Array[] = {1, 2, 3, 1, 2, 1, 2, 2};
Print(Strange(Array));
}
这个人似乎也是。
{
int Arr[]={1, 2, 4, 4, 2, 1, 2, 2, 1, 4, 1, 4, 3, 3, 3, 4, 3, 3, 1, 3, 4, 3, 3};
Comment( GetM(Arr) );
}
int GetM(int &Mas[])
{
int c=0,cd=0,res=-1;
ArraySort(Mas);
int ArrSize= ArraySize(Mas);
for(int i=0; i<ArrSize; i++) {
for(int x=i; x<ArrSize; x++) {
if(Mas[i]==Mas[ArrayMinimum(Mas,WHOLE_ARRAY,x)]) c++;
}
if(c>=cd) { // ищем первое большее ">" или максимально большее ">=" при одинаковом количестве
cd=c; // количество совпадений
res=Mas[i]; // число
}
c=0;
}
return( res /*cd*/); // число|количество
}