複数の選択肢
2-1
次の関数のどれがO(N)ですか?(4点)
A。2NlogN
B. logN 2
C. N(嘘)2
D. N 2 /2
2-2
N×N×Nの3次元配列Aが与えられた場合、配列を変更せずに最小の要素を見つける時間の複雑さは次のとおりです。(4ポイント)
A. O(N 2)
B。O(nlogn)C。O
(N 3 logN)
D. O(N 3)
2-4
次のコードセグメントの時間の複雑さは()です。(4点)
x=0;
for( i=1; i<n; i++ )
for ( j=1; j<=n-i; j++ )
x++;
A. O(n)
B. O(N 2)
C. O(N 3)
D. O(2 N)
2-5
次のコード
if ( A > B ) {
for ( i=0; i<N*N/100; i++ )
for ( j=N*N; j>i; j-- )
A += B;
}
else {
for ( i=0; i<N*2; i++ )
for ( j=N*3; j>i; j-- )
A += B;
}
の時間の複雑さは次のとおりです:(4ポイント)
A. O(N 3)
B. O(N 4)
C. O(N 5)
D。O(N 6)
2-6
次のコード
for(i=0; i<n; i++)
for(j=i; j>0; j/=2)
printf(“%d\n”, j);
の時間の複雑さは次のとおりです:(4ポイント)
A.のO(N×I)
B. O(N)
C. O(N 2)
D. O(NlogN)
内側のループは毎回2で分割され、log2のみが最下位のN回です。
プログラミングに関する質問
7-1最大値とその添え字を見つける(80ポイント)
この質問では、指定されたn個の数値の最大値とそれに対応する最小添え字(添え字は0から始まります)を見つけるプログラムを作成する必要があります。
入力形式:
最初の行に正の整数n(1 <n≤10)を入力します。2行目にスペースで区切ってn個の整数を入力します。
出力形式:
最大値と最大値の最小添え字をスペースで区切って1行で出力します。
入力サンプル:
6
2 8 10 1 9 10
サンプル出力:
10 2
#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int A[n];
for(int i=0; i<n; i++){
cin >> A[i];
}
int max=A[0];
int max_key = 0;
for (int j=1; j<n; j++){
if(A[j] > max){
max = A[j];
max_key = j;
}
}
cout << max << " " << max_key;
}