2 条题解
-
1
根据题目公式的暴力。。。
#include<bits/stdc++.h> using namespace std; #define ll long long char s[20];int a[20]; int main() { ll n,k;scanf("%lld%lld",&n,&k); scanf("%s",s+1); for(ll i=1;i<=n;i++)a[i]=s[i]-'a'; sort(a+1,a+n+1); ll ans=0; do { bool f=1; for(int i=1;i<=n-k+1;i++) { bool f1=1; for(int j=1;j<=k;j++) { if(a[i+k-j]==a[i+j-1])continue; //a[i+j-1]才能保证从头开始,不然是从2开始(卡了我很久) f1=0;break; } if(f1){f=0;break;} } if(f)ans++; }while(next_permutation(a+1,a+n+1)); printf("%lld\n",ans); return 0; } -
0
暴力
#include<bits/stdc++.h> using namespace std; #define int long long const int N=20; char s[N];int a[N]; signed main() { int n,k;scanf("%lld%lld%s",&n,&k,s); for(int i=0;i<n;i++)a[i]=s[i]-'a'; sort(a,a+n);int ans=0; do { bool pd=1; for(int i=0;i<=n-k;i++) { bool bk=1; for(int j=0;j<k;j++) { if(a[i+j]==a[i+k-1-j])continue; bk=0;break; } if(bk){pd=0;break;} } if(pd)ans++; }while(next_permutation(a,a+n)); printf("%lld\n",ans); return 0; }
- 1
信息
- ID
- 1668
- 时间
- 2000ms
- 内存
- 1024MiB
- 难度
- 7
- 标签
- 递交数
- 14
- 已通过
- 10
- 上传者