c013 - 00488 - Triangle Wave
題目描述
題目要求根據給定的振幅 (Amplitude) 和頻率 (Frequency) 產生三角形波。輸入包含多組測試資料,每組資料包含一個振幅和一個頻率。程式需要輸出指定頻率的三角形波,每個波的振幅高度由振幅值決定。
解題思路
這題主要考驗對迴圈的控制能力和輸出格式的掌握。程式需要根據輸入的振幅和頻率,使用巢狀迴圈生成三角形波的形狀。外層迴圈控制頻率,中層迴圈控制波的上升部分,內層迴圈控制每行輸出的數字。然後,再用類似的方式控制波的下降部分。注意輸出格式,包括每行數字的輸出和每組資料之間的空行。
複雜度分析
- 時間複雜度: O(n * a * f * a),其中 n 是測試資料組數,a 是振幅,f 是頻率。
- 空間複雜度: O(1),程式只使用了常數級別的額外空間。
程式碼
#include <iostream>
using namespace std;
int main(){
int n=0;
int a=0;
int f=0;
while(cin >> n){
for(int i=1;i<=n;i++){
cin >> a >> f;
for(int j=1;j<=f;j++){
for(int k=1;k<=a;k++){
for(int l=1;l<=k;l++){
cout << k;
}
cout << endl;
}
for(int k=a-1;k>0;k--){
for(int l=k;l>0;l--){
cout << k;
}
cout << endl;
}
if(i!=n||f!=j){
cout << endl;
}
}
}
}
}