用cout输出字符串时间超限怎么办

用cout输出字符串时间超限怎么办

#include<bits/stdc++.h>
using namespace std;
int l,c,s;
char a[30];
int b[30];
void dfs(int x,int y,int n,int m,string p){
    if(y==l&&n<=0&&m<=0){
        printf("%s\n",p.c_str());
        s++;
        return;
    }
    if(s==25000){
        exit(0);
    }
    if(b[x]<n||c-x-b[x]+1<m||x>c){
        return;
    }
    if(a[x]=='a'||a[x]=='e'||a[x]=='i'||a[x]=='o'||a[x]=='u'){
        dfs(x+1,y+1,n-1,m,p+a[x]);
    }
    else{
        dfs(x+1,y+1,n,m-1,p+a[x]);
    }
    dfs(x+1,y,n,m,p);
    return;
}
int main(){
    freopen("ticket.in","r",stdin) ;
    freopen("ticket.out","w",stdout);
    scanf("%d%d",&l,&c);
    for(int i=1;i<=c;i++){
        scanf("%s",&a[i]);
        if(a[i]=='a'||a[i]=='e'||a[i]=='i'||a[i]=='o'||a[i]=='u'){
            s++;
        }
    }
    sort(a+1,a+c+1);
    for(int i=1;i<=c;i++){
        b[i]=s;
        if(a[i]=='a'||a[i]=='e'||a[i]=='i'||a[i]=='o'||a[i]=='u'){
            s--;
        }
    }
    dfs(1,0,1,2,"");
    return 0;
}


这段代码有一个点超了0.1秒

改用 printf , 速度快非常多

cout是一个缓冲的输出流,printf是一个非缓冲的输出函数
使用printf代替cout来输出字符串