#37301: 為什麼cpp這樣會比較久


newton9619 (Newton)


#include<bits/stdc++.h>
using namespace std;
int main(){
    string line;
    int n;
    cin>>line;
    line=line+line;
    n=line.length()/2;
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            cout<<line[i+j];
        }
        cout<<endl;
    }
}
--------------------------------------------------------------------
#include<bits/stdc++.h>
using namespace std;
int main(){
    string line;
    int n;
    cin>>line;
    n=line.length();
    for(int i=0;i<n;i++){
        cout<<line<<endl;
        for(int j=0;j<n-1;j++){
            swap(line[j],line[j+1]);
        }
    }
}
上面的我是想說利用兩倍長度再一個一個讀取,結果前面的要94ms,後面只要6ms
#37313: Re: 為什麼cpp這樣會比較久


wilson40804@apps.ntpc.edu.tw (廖偉丞)


 

cout花時間,用越少次越好

#37397: Re: 為什麼cpp這樣會比較久


cges30901 (cges30901)


#include
using namespace std;
int main(){
    string line;
    int n;
    cin>>line;
    line=line+line;
    n=line.length()/2;
    for(int i=0;i
        for(int j=0;j
            cout<
        }
        cout<
    }
}
--------------------------------------------------------------------
#include
using namespace std;
int main(){
    string line;
    int n;
    cin>>line;
    n=line.length();
    for(int i=0;i
        cout<
        for(int j=0;j
            swap(line[j],line[j+1]);
        }
    }
}
上面的我是想說利用兩倍長度再一個一個讀取,結果前面的要94ms,後面只要6ms


上面的只要把cout改成putchar_unlocked就只剩8ms了

也可以用substr,只要4ms

或是用printf指定輸出長度,只要3ms