求助!20pts!!!!!!!
查看原帖
求助!20pts!!!!!!!
919802
BFs_YYDS楼主2024/4/27 22:01

评测记录


以下是超长代码

#include<iostream>
#include<iterator>
#include<map>
#define MOD 1000000007
using namespace std;
basic_string<char> s;
map<int,char>m;
long long int count=0;
int n;
int ans[2005];
int used[2005];
bool isReply(basic_string<char>);
void mapInitialization();
void per(int step);
void judgeCnt();
int main(){
    cin>>n;
    cin>>s;
    clock_t start,end;
    start=clock();
    mapInitialization();
    per(0);
    end=clock();
    cout<<count<<endl<<(end-start)/CLOCKS_PER_SEC;
}
bool isReply(basic_string<char>a){
    bool flag=true;
    basic_string<char>::iterator it;
    basic_string<char>::reverse_iterator rit;
    for(it=a.begin(), rit=a.rbegin(); it<=rit.base(); it++,rit++){
        if(*it!=*rit){
            flag=false;
            break;
        }
    }
    return flag;
}
void mapInitialization(){
    basic_string<char>::iterator it;
    int ind=1;
    for(it=s.begin(); it!=s.end(); it++){
        m.insert(map<int,char>::value_type(ind,*it));
        ind++;
    }
}
void judgeCnt(){
    basic_string<char>t;
    int p=0;
    for(int i=0; i<n; i++){
        p=p*10+ans[i];
    }
    for(int i=0; i<n; i++){
        t+=m[p%10];
        p/=10;
    }
    if(!isReply(t)){
        count++;
        count%=MOD;
    }
}
void per(int step){
    if(step>=n){
        judgeCnt();
        return;
    }
    for(int j=1; j<=n; j++){
        if(used[j]==0){
            used[j]=1;
            ans[step]=j;
            per(step+1);
            used[j]=0;
        }
    }
}

有没有大佬可以帮我一下

2024/4/27 22:01
加载中...