NOIP 2008提高组初赛试题完善程序题 5.1 找第k大的数
/*
1.(找第k大的数) 给定一个长度为1,000,000的无序正整数序列,
以及另一个数n(1<=n<=1000000),
接下来以类似快速排序的方法找到序列中第n大的数
(关于第n大的数:例如序列{1,2,3,4,5,6}中第3大的数是4)。
*/
#include <iostream>
using namespace std;
int a[1000001],n,ans = -1;
void swap(int &a,int &b)
{
int c;
c = a; a = b; b = c;
}
int FindKth(int left, int right, int n)
{
int tmp,value,i,j;
if (left == right) return left;
tmp = rand()% (right - left) + left;
swap(a[tmp],a[left]);
value = ①
i = left;
j = right;
while (i < j)
{
while (i < j && ② ) j --;
if (i < j) {a[i] = a[j]; i ++;} else break;
while (i < j && ③ ) i ++;
if (i < j) {a[j] = a[i]; j --;} else break;
}
④
if (i < n) return FindKth( ⑤ );
if (i > n) return ⑥
return i;
}
int main()
{
int i;
int m = 1000000;
for (i = 1;i <= m;i ++)
cin >> a[i];
cin >> n;
ans = FindKth(1,m,n);
cout << a[ans];
return 0;
}
/*
① a[left];
② a[j] < value (或a[j] <= value)
③ a[i] > value (或a[i] >= value)
④ a[i] = value;
⑤ i + 1,right,n
⑥ FindKth(left, i – 1, n);
*/
NOIP 2008提高组初赛试题完善程序题 5.2 矩阵中的数字
/*
NOIP 2008提高组初赛试题完善程序题5.2
(矩阵中的数字)有一个n*n(1<=n<=5000)的矩阵a,
对于1<=i < n,1<=j<=n, a[i,j] < a[i + 1,j] a[j,i] < a[j,i+1]。
即矩阵中左右相邻的两个元素,右边的元素一定比左边的大。
上下相邻的两个元素,下面的元素一定比上面的大。
给定矩阵a中的一个数字k,找出k所在的行列
(注意:输入数据保证矩阵中的数各不相同)。
*/
#include <iostream>
using namespace std;
int n,k,answerx,answery;
int a[5001][5001];
void FindKPosition()
{
int i = n,j = n;
while (j > 0)
{
if (a[n][j] < k) break;
j --;
}
①
while (a[i][j] != k)
{
while ( ② && i > 1) i --;
while ( ③ && j <= n) j ++;
}
④
⑤
}
int main()
{
int i,j;
cin >> n;
for (i = 1;i <= n;i ++)
for (j = 1;j <= n;j ++)
cin >> a[i][j];
cin >> k;
FindKPosition();
cout << answerx << " " << answery << endl;
return 0;
}
/*
1.正确答案: j++; / j+=1; / j=j+1;
2.正确答案: a[i][j] > k
3.正确答案: a[i][j] < k
4.正确答案: answerx = i;
5.正确答案: answery = j;
*/
C++画图之Go C编程 第1-9课(共53题)
OpenJudge NOI题库 116题
OpenJudge NOI题库 入门 116题 (一)
OpenJudge NOI题库 入门 116题 (一)_openjudge题库答案_dllglvzhenfeng的博客-CSDN博客
OpenJudge NOI题库 入门 116题 (二)
OpenJudge NOI题库 入门 116题 (三)
OpenJudge NOI题库 入门 116题 (三)_csp-j1,csp-s1温州认证点_dllglvzhenfeng的博客-CSDN博客
小学生C++编程基础(一)--- 123题
小学生C++趣味编程 每日一练
信息学奥赛 算法基础 课堂练习与课后作业
PAT乙级(Basic Level)真题