第一题:
#include<iostream>
using namespace std;
int main()
{
int T=0;
cin>>T; //输入组数
while(0!=T--)
{
int n=0;
cin>>n; //输入整数个数n
int* arr=new int[n];
int k=0;
for(int iLoop=0;iLoop<n;iLoop++)
{
cin>>arr[iLoop]; //输入n个整数
int flag=iLoop;
for(int jLoop=iLoop;jLoop>=0;jLoop--)
{
//倒序遍历所有输入的数
if(arr[flag]>arr[jLoop])
{
//遇到比输入数小的交换(从大到小排序)
int temp=arr[flag];
arr[flag]=arr[jLoop];
arr[jLoop]=temp;
flag=jLoop;
}
}
}
cin>>k; //输入要输出第k大的k
cout<<endl<<arr[--k]<<endl; //输出第k大的数
}
return 0;
}
第二题:
#include<iostream>
using namespace std;
int climb(int num)
{
if(num==1) return 1; //1阶时,一种方法
if(num==2) return 2; //2阶时,两种方法
return (climb(num-1)+climb(num-2)); //其他阶数情况
}
int main()
{
int T=0;
cin>>T; //输入组数
while(0!=T--)
{
int n=0;
cin>>n; //输入n
cout<<climb(n)<<endl; //输出方法数
}
return 0;
}
追问第二题oj上会超时。。。
追答看一下Sample Input
追问
这是数组的题。。。
追答主函数改一下就可以了
int main()
{
int n=0;
while(cin>>n) //输入n
{
cout<<climb(n)<<endl; //输出方法数
}
return 0;
}
主函数改一下就可以了
int main()
{
int n=0;
while(cin>>n) //输入n
{
cout<<climb(n)<<endl; //输出方法数
}
return 0;
}
主函数改一下就可以了
int main()
{
int n=0;
while(cin>>n) //输入n
{
cout<<climb(n)<<endl; //输出方法数
}
return 0;
}