私は大学で情報学の宿題を解決するために、私はいつも同じ問題を解決するさまざまな方法を見つけます。 片道は最速(実行時間)ですが、最長かつ複雑です。 もう1つは実現が容易で、実行時間が短く、理解しやすいなどです。読みやすさとシンプルさの向上対プログラミングの高速化と高速化、選択肢
最小の例として、C++でN要素の行を出力するプログラムを作成する必要があるということです。各要素には、中央の要素とは異なる隣接要素があります。
Ex.
6 Elements: *_*_*_
7 Elements: *_*_*_*
第1の解決策は最も簡単である:
#include <iostream>
using namespace std;
int main(void){
int a;
cin >> a;
for (int i=1; i<=a; i++)
{
if (i%2 != 0)
{
cout << "*";
}
else
{
cout << " ";
}
}
return 0;
}
2つ目は、(以下条件式チェック)を実行するために少し実装が難しくなく、高速である:
#include <iostream>
using namespace std;
int main(void){
int a;
cin >> a;
if (a%2 == 1)
{
for (int i=1; i<=a; i=i+2)
{
cout << "*";
cout << " ";
}
}
else
{
for (int i=1; i<a; i=i+2)
{
cout << "*";
cout << " ";
}
cout << " ";
}
return 0;
}
私の質問は何に焦点を当てるべきですか?この2つの問題解決方法には常に相違があるため、実装/展開が容易で、可読性やアルゴリズムが優れていて、実行が速く、強力なロジックです。
私はより良いスピードのために1つだけのcoutで解決策2に行きます:) for(int i = 1; i <=; i = i + 2){cout << "* *"; } 'BTW私は、例2のtypoがあると信じています:両方のループが同じ順序で星とスペースを発行します。 –
)、スペースは例としてスペースの代わりに " - "と言いましょう – DomainFlag
2番目のバージョンに2つのループがある理由は見当たりません。 – perreal