C++ 时间多数投票算法错误
这是算法 这是我的密码C++ 时间多数投票算法错误,c++,algorithm,C++,Algorithm,这是算法 这是我的密码 #include <iostream> using namespace std; int main(){ int n; cin>>n; int ans,counter=0,a,temp=0,time=0; while(temp<n){ cin>>a; if(counter==0) { counter=1;
#include <iostream>
using namespace std;
int main(){
int n;
cin>>n;
int ans,counter=0,a,temp=0,time=0;
while(temp<n){
cin>>a;
if(counter==0)
{
counter=1;
ans=a;
}
else if(counter>0){
if(ans==a)
++counter;
else
--counter;
}
++temp;
}
cout<<"The number "<<ans<<" is in the more majority ";
}
#包括
使用名称空间std;
int main(){
int n;
cin>>n;
int ans,计数器=0,a,温度=0,时间=0;
而(温度>a;
如果(计数器==0)
{
计数器=1;
ans=a;
}
否则如果(计数器>0){
如果(ans==a)
++计数器;
其他的
--计数器;
}
++温度;
}
cout我想你得到了给定数据的预期答案。关键是链接页面上的这句话:
“当我们完成时,如果
多数票。”
在这种情况下,没有多数,因此算法返回无效结果。请使用输入重试6 1 2
下面是一个教授不太可能接受的没有数组的实现:
#include <iostream>
using namespace std;
int majority(int n,int &ans,int counter){
int a,i;
if (!n) return 0;
cin>>a;
if (!counter) ans=a;
counter+=2*(ans==a)-1;
i=majority(n-1,ans,counter);
return i+(ans==a);
}
int main(){
int n,ans;
cin>>n;
if (n/2 < majority(n,ans,0))
cout<<"The number "<<ans<<" is in the more majority "<<endl;
else
cout<<"No majority"<<endl;
}
#包括
使用名称空间std;
整数多数(整数n、整数和ans、整数计数器){
int a,i;
如果(!n)返回0;
cin>>a;
如果(!计数器)ans=a;
计数器+=2*(ans==a)-1;
i=多数(n-1,ans,计数器);
返回i+(ans==a);
}
int main(){
int n,ans;
cin>>n;
如果(n/2<多数(n,ans,0))
cout我想你得到了给定数据的预期答案。关键是链接页面上的这句话:
“当我们完成时,如果
多数票。”
在这种情况下,没有多数,因此算法返回无效结果。请使用输入重试6 1 2
下面是一个教授不太可能接受的没有数组的实现:
#include <iostream>
using namespace std;
int majority(int n,int &ans,int counter){
int a,i;
if (!n) return 0;
cin>>a;
if (!counter) ans=a;
counter+=2*(ans==a)-1;
i=majority(n-1,ans,counter);
return i+(ans==a);
}
int main(){
int n,ans;
cin>>n;
if (n/2 < majority(n,ans,0))
cout<<"The number "<<ans<<" is in the more majority "<<endl;
else
cout<<"No majority"<<endl;
}
#包括
使用名称空间std;
整数多数(整数n、整数和ans、整数计数器){
int a,i;
如果(!n)返回0;
cin>>a;
如果(!计数器)ans=a;
计数器+=2*(ans==a)-1;
i=多数(n-1,ans,计数器);
返回i+(ans==a);
}
int main(){
int n,ans;
cin>>n;
如果(n/2<多数(n,ans,0))
cout我想你得到了给定数据的预期答案。关键是链接页面上的这句话:
“当我们完成时,如果
多数票。”
在这种情况下,没有多数,因此算法返回无效结果。请使用输入重试6 1 2
下面是一个教授不太可能接受的没有数组的实现:
#include <iostream>
using namespace std;
int majority(int n,int &ans,int counter){
int a,i;
if (!n) return 0;
cin>>a;
if (!counter) ans=a;
counter+=2*(ans==a)-1;
i=majority(n-1,ans,counter);
return i+(ans==a);
}
int main(){
int n,ans;
cin>>n;
if (n/2 < majority(n,ans,0))
cout<<"The number "<<ans<<" is in the more majority "<<endl;
else
cout<<"No majority"<<endl;
}
#包括
使用名称空间std;
整数多数(整数n、整数和ans、整数计数器){
int a,i;
如果(!n)返回0;
cin>>a;
如果(!计数器)ans=a;
计数器+=2*(ans==a)-1;
i=多数(n-1,ans,计数器);
返回i+(ans==a);
}
int main(){
int n,ans;
cin>>n;
如果(n/2<多数(n,ans,0))
cout我想你得到了给定数据的预期答案。关键是链接页面上的这句话:
“当我们完成时,如果
多数票。”
在这种情况下,没有多数,因此算法返回无效结果。请使用输入重试6 1 2
下面是一个教授不太可能接受的没有数组的实现:
#include <iostream>
using namespace std;
int majority(int n,int &ans,int counter){
int a,i;
if (!n) return 0;
cin>>a;
if (!counter) ans=a;
counter+=2*(ans==a)-1;
i=majority(n-1,ans,counter);
return i+(ans==a);
}
int main(){
int n,ans;
cin>>n;
if (n/2 < majority(n,ans,0))
cout<<"The number "<<ans<<" is in the more majority "<<endl;
else
cout<<"No majority"<<endl;
}
#包括
使用名称空间std;
整数多数(整数n、整数和ans、整数计数器){
int a,i;
如果(!n)返回0;
cin>>a;
如果(!计数器)ans=a;
计数器+=2*(ans==a)-1;
i=多数(n-1,ans,计数器);
返回i+(ans==a);
}
int main(){
int n,ans;
cin>>n;
如果(n/2<多数(n,ans,0))
你是否正确地实现了这个算法,但没有正确地解释它
该算法假设存在一个多数元素(超过一半的元素是该特定元素)并返回它。如果该假设为假,则必须对整个序列进行两次检查,以检查是否确实存在多数元素
在您的示例中,没有多数,因此该算法不起作用。您正确地实现了该算法,但没有正确地解释它
该算法假设存在一个多数元素(超过一半的元素是该特定元素)并返回它。如果该假设为假,则必须对整个序列进行两次检查,以检查是否确实存在多数元素
在您的示例中,没有多数,因此该算法不起作用。您正确地实现了该算法,但没有正确地解释它
该算法假设存在一个多数元素(超过一半的元素是该特定元素)并返回它。如果该假设为假,则必须对整个序列进行两次检查,以检查是否确实存在多数元素
在您的示例中,没有多数,因此该算法不起作用。您正确地实现了该算法,但没有正确地解释它
该算法假设存在一个多数元素(超过一半的元素是该特定元素)并返回它。如果该假设为假,则必须对整个序列进行两次检查,以检查是否确实存在多数元素
在您的示例中,没有多数票,因此算法不起作用。它真的应该说6是多数票吗?多数票意味着超过一半的人投了赞成票。我希望答案是“没有找到多数票”。(我希望程序在那一点上仍在等待输入,除非首先通过了5。)我从上下文中假设5是作为第一个参数传入的,而对“6 6 1 2 3”的引用仅意味着在while循环中。@atk可能正确的更改是说“mode”而不是“mostrict”--这似乎是OP想要表达的概念。而且,在许多机器学习文献中,这种东西被通俗地称为“多数票”算法,即使确定的标准不是有一个可能的输出子集获得了超过一半的可用投票。在该上下文中,将这种情况称为“多数投票”通常被认为是有效的术语