OVa OJ 488 - Triangle Wave
2014-10-01 09:42
375 查看
先来一手丑的
这个显然很丑,如果tri_wave里面用if判断还是很丑。解决这一问题的办法就是从数字本身去思考,对于amplitude=4的情形,实际上每个波浪我们需要输出7行,行数和输出的数字个数以及值的关系是
1 1 , 2 2 ,3 3, 4 4, 5 3, 6 2,7 1
这个图像显然是绝对值函数4-abs(x-4),利用这个思路我们重写tri_wave函数
void tri_wave(int amplitude)
{
for (int i = 1; i <= 2*amplitude-1; ++i)
{
int temp = amplitude - abs(i - amplitude);
for (int j = 1; j<=temp; ++j)
{
cout << temp;
}
cout << endl;
}
}
#include <iostream> using namespace std; void tri_wave(int amplitude) { for (int i = 1; i <=amplitude; ++i) { for (int j = 1; j <= i; ++j) { cout << i; } cout << endl; } for (int i = amplitude - 1; i > 0; --i) { for (int j = 1; j <= i; ++j) { cout << i; } cout << endl; } } int main() { int times,amp,frequency; cin >> times; cout << endl; for (int i = 0;i!=times;++i){ cin >> amp >> frequency; for (int j = 0; j != frequency; ++j){ tri_wave(amp); cout << endl; } cout << endl; } return 0; }
这个显然很丑,如果tri_wave里面用if判断还是很丑。解决这一问题的办法就是从数字本身去思考,对于amplitude=4的情形,实际上每个波浪我们需要输出7行,行数和输出的数字个数以及值的关系是
1 1 , 2 2 ,3 3, 4 4, 5 3, 6 2,7 1
这个图像显然是绝对值函数4-abs(x-4),利用这个思路我们重写tri_wave函数
void tri_wave(int amplitude)
{
for (int i = 1; i <= 2*amplitude-1; ++i)
{
int temp = amplitude - abs(i - amplitude);
for (int j = 1; j<=temp; ++j)
{
cout << temp;
}
cout << endl;
}
}
相关文章推荐
- UVa488 Triangle Wave
- UVA 488 - Triangle Wave 水~
- UVA 488 Triangle Wave(输出三角波)
- 488 - Triangle Wave
- 488 - Triangle Wave
- UVa_488 - Triangle Wave
- uva-488 - Triangle Wave
- UVA 488 - Triangle Wave
- UVa488 - Triangle Wave-难度1
- UVA oj 488 Triangle Wave
- uvaoj 488 - Triangle Wave
- UVa 488 - Triangle Wave
- UVa 488 - Triangle Wave
- UVA - 488 Triangle Wave(水题)
- 【UVA】【第0章】488 - Triangle Wave
- UVa 488 - Triangle Wave
- UVaOJ 488 - Triangle Wave
- UVa 488 Triangle Wave
- 488 - Triangle Wave
- UVaOJ---488 - Triangle Wave