测量数组中的唯一数字
Measuring unique numbers in an array
好吧,伙计们,我解决了!我的代码是正确的,系统很愚蠢,在输出后需要一个endl......感谢大家的回复!
你能在我的代码中找到任何错误吗?我正在尝试测量数组中唯一整数的数量。我使用此代码,但某处似乎存在错误。例:
输入:4,1,15,10,1
输出:3
我的代码输出3 也是正确的,用更大的输入对其进行了测试,再次是正确的,但是当我将我的代码发送到我的大学系统进行评估时,它正确编译了代码,但告诉我我的输出是错误的。
#include <iostream>
using namespace std;
int main()
{
int n,d;
cin>>n;
int *A=new int[n];
for(int i=0; i<n; i++)
cin>>A[i];
for(int i=1; i<n; i++)
{
d=i;
while(d>0 && A[d] < A[d-1])
{
swap(A[d],A[d-1]);
d--;
}
}
int count=1;
int tmp=A[0];
for(int i=1; i<n; i++)
if(tmp!=A[i]){count+=1;tmp=A[i];}
cout<<count;
return 0;
}
您的排序算法有问题。这将起作用
#include <iostream>
using namespace std;
void swap(int &a, int &b) {
int temp = a;
a = b;
b = a;
}
int main()
{
int n,d;
cin>>n;
int *A=new int[n];
for(int i=0; i<n; i++)
cin>>A[i];
for(int i=0; i<n; i++)
{
for (int j =0; j < n; j++) {
if (A[j] < A[i])
swap(A[i], A[j]);
}
}
int count=1;
int tmp=A[0];
for(int i=1; i<n; i++)
if(tmp!=A[i]){count+=1;tmp=A[i];}
cout<<count;
return 0;
}
我测试了您的程序,运行了几次,没有注意到任何异常。此外,你的气泡排序算法虽然不是很有效,但仍然比Venkatesh的建议更快,后者必然会在O(n^2)时间内运行。
此外,请尝试更准确地描述您的问题。只是告诉我们它有一个错误,不是很有帮助。请注意,您可以执行以下操作:
for(int i=0; i<n; i++)
{
cin>>A[i];
d=i;
while(d>0 && A[d] < A[d-1])
{
swap(A[d],A[d-1]);
d--;
}
}
为您节省一个循环。
相关文章:
- 按唯一标识符描述数字列表
- C++:创建1000次唯一的随机分布,在任何分布中都没有重复的数字
- 需要在C 中生成一个从00001到99999的唯一5位数字
- 生成跨系统唯一数字的算法
- 选择6个随机唯一数字
- 如何将目录路径转换为唯一的数字标识符 (Linux/C++)
- 标准容器/库,用于存储数字窗口并返回唯一数字的数量
- 在c++中随机生成n以内的唯一数字
- 连续获取 2 个唯一数字
- 测量数组中的唯一数字
- 在编译时生成唯一的数字
- 需要在数组中找到一个唯一的数字
- 如何使用std::find查找唯一的数字
- C++中的唯一数字
- 随机生成n个唯一的数字
- c++ reinterpret_cast,生成唯一的数字
- 进程间在0到255之间的唯一数字
- 从一组集合{{中选择一组数字{1,2,3}.},{.},{.}}使得所有元素都是唯一的
- 在数组中查找唯一的数字
- 通过类型标识符表示类的数字唯一标识符