2 条题解

  • 1
    @ 2026-3-8 10:08:00

    根据题目公式的暴力。。。

    #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
      @ 2025-12-18 21:16:33

      暴力

      #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
      上传者