题目描述:给你n个整数,请按从大到小的顺序输出其中前m大的数输入:每组测试数据有两行,第一行有两个数n,m(0<n,m<1000000),第二行包含n个各不相同,且都处于区间[-500000,500000]的整数输出:对每组测试数据按从大到小的顺序输出前m大的数
这是我的代码:
只要一运行就报错,一下是报错的情况:
请教大家为什么程序运行不了呢,编译是正确的,十分感谢大家。
走同样的路,发现不同的人生
みんながサブジェクトのオープン配列に問題があると言っていたので、サブジェクトのコードを OJ に置いて実行してみます
追記: 質問者の出力形式には落とし穴がありました。質問者が理解し、最小限の変更を加えられるようにするという原則に従ってコードを改善しました。
#include #define N 500000 int main() { int n、m; int t[1000001]; while(scanf("%d%d", &n, &m) != EOF) { for(int i = 0; i =0; i--) { if (num==m) { printf("\n"); 壊す; } else if(t[i]==1) { printf("%d", i-N); // ここにはスペースはありません 数値++; if (数値 != m){ printf(" "); // 最後の出力にはスペースがないため、これはトラップです。 } } } } 0を返します。 }
HDU
ナイン ディグリーズ
タイトルで述べたように、ハッシュ アルゴリズムは並べ替えの問題ではありません。
これは ACM の基本的な質問です。値をキーとして使用しないように、入力数値に 500000 を加えます。
出力するときは、値が 0 ではないキーだけを出力します。
インターネット上には多くの回答があります
http://www.cnblogs.com/acmer-...
スタック上でそのような大きな配列を開きますか?
この種の大学院入学試験の質問をする必要はありません。
1. t をヒープに定義します。2. n と m を入力して、サイズの関係を判断します。
配列が大きすぎる場合、スタックが爆発する可能性が非常に高くなります。 new を使用して配列を適用してみることができます。
new
みんながサブジェクトのオープン配列に問題があると言っていたので、サブジェクトのコードを OJ に置いて実行してみます
追記: 質問者の出力形式には落とし穴がありました。質問者が理解し、最小限の変更を加えられるようにするという原則に従ってコードを改善しました。
HDU
ナイン ディグリーズ
タイトルで述べたように、ハッシュ アルゴリズムは並べ替えの問題ではありません。
これは ACM の基本的な質問です。値をキーとして使用しないように、入力数値に 500000 を加えます。
出力するときは、値が 0 ではないキーだけを出力します。
インターネット上には多くの回答があります
http://www.cnblogs.com/acmer-...
スタック上でそのような大きな配列を開きますか?
この種の大学院入学試験の質問をする必要はありません。
1. t をヒープに定義します。
2. n と m を入力して、サイズの関係を判断します。
配列が大きすぎる場合、スタックが爆発する可能性が非常に高くなります。
new
を使用して配列を適用してみることができます。