插入排序任务
Insertion sort task
我试图解决一个问题,在这个问题中我应该对越来越多的数字数组进行排序,而不是从排序的数组中取出前 k 个数字并消除那些重复的数字并将它们写入输出。
这是我的代码:
#include <iostream>
using namespace std;
int main()
{
int n, k;
cin >> n >> k;
int tab[n];
for (int i = 0; i < n; i++) //taking n numbers from input
{
cin >> tab[i];
}
int j, element;
for (int i = 1; i < n; i++) //i am using insertion sort
{
j = 0;
while (tab[j] < tab[i])
j++;
element = tab[i];
for(int k = i - 1; k >= j; k--)
tab[k + 1] = tab[k];
tab[j] = element;
}
for (int i = 0; i < k; i++) //writing k smallest numbers without repetitions
{
if (tab[i] == tab[i + 1])
continue;
cout << tab[i] <<"\n";
}
cin >> n;
return 0;
}
通常它可以工作并给出预期的输出,但是当我上传这个问题来检查它的正确性时(我在 polish 网站上发现了这个问题),它说 "wrong anwser"。
我在这里看不到任何错误,也许你会看到我写的不好的东西。
我想你误解了这个问题。 'eliminate those numbers that are repeating' 意味着您必须打印一次该数字并消除该数字的后续出现。对于前。
n = 5;
k = 3;
tab[n] = 5 1 1 1 1
在这里,sorted tab[] 变成'1 1 1 1 5',那么预期输出是'1',但是你的程序什么也没给出!
希望对您有所帮助:)
我试图解决一个问题,在这个问题中我应该对越来越多的数字数组进行排序,而不是从排序的数组中取出前 k 个数字并消除那些重复的数字并将它们写入输出。
这是我的代码:
#include <iostream>
using namespace std;
int main()
{
int n, k;
cin >> n >> k;
int tab[n];
for (int i = 0; i < n; i++) //taking n numbers from input
{
cin >> tab[i];
}
int j, element;
for (int i = 1; i < n; i++) //i am using insertion sort
{
j = 0;
while (tab[j] < tab[i])
j++;
element = tab[i];
for(int k = i - 1; k >= j; k--)
tab[k + 1] = tab[k];
tab[j] = element;
}
for (int i = 0; i < k; i++) //writing k smallest numbers without repetitions
{
if (tab[i] == tab[i + 1])
continue;
cout << tab[i] <<"\n";
}
cin >> n;
return 0;
}
通常它可以工作并给出预期的输出,但是当我上传这个问题来检查它的正确性时(我在 polish 网站上发现了这个问题),它说 "wrong anwser"。 我在这里看不到任何错误,也许你会看到我写的不好的东西。
我想你误解了这个问题。 'eliminate those numbers that are repeating' 意味着您必须打印一次该数字并消除该数字的后续出现。对于前。
n = 5;
k = 3;
tab[n] = 5 1 1 1 1
在这里,sorted tab[] 变成'1 1 1 1 5',那么预期输出是'1',但是你的程序什么也没给出!
希望对您有所帮助:)