3 条题解

  • 2
    @ 2024-11-30 15:00:16

    #include<bits/stdc++.h> using namespace std; int n,m; char a[30],c[30]; bool f; void print(){ f=false; for(int i=1;i<=m;i++){ if(c[i]'a'||c[i]'e'||c[i]'i'||c[i]'o'||c[i]=='u') f=true; } if(f){ for(int j=1;j<=m;j++) cout<<c[j]; cout<<endl; }

    } void dfs(int k){ for(int i=1;i<=n;i++){ if(a[i]>c[k-1]){ c[k]=a[i]; if(k==m)print(); else dfs(k+1); } } } int main() { cin>>m>>n; for(int i=1;i<=n;i++)cin>>a[i]; sort(a+1,a+1+n); dfs(1); return 0; }

    • 1
      @ 2025-7-5 14:03:44
      #include<bits/stdc++.h>
      using namespace std;
      int n,l;
      char a[105];
      
      char w[105];
      bool vis[256];
      bool check(){//判断单词是否有元音字母和两个辅音字母
      	int yuan=0,fu=0;
      	for(int i=1;i<=l;i++){
      		if(w[i]=='a'||w[i]=='e'||w[i]=='i'||w[i]=='o'||w[i]=='u'){
      			yuan++;
      		}
      		else fu++;
      	}
      	if(yuan&&fu>=2) return 1;
      	return 0;
      }
      void print(){//输出
      	for(int i=1;i<=l;i++) cout<<w[i];
      	cout<<'\n';
      	return;
      }
      void dfs(int t,int s){
      	if(t==l+1){
      		if(check()) print();
      		return;
      	}
      	for(int i=s+1;i<=n;i++){
      		if(!vis[a[i]]){//判重
      			vis[a[i]]=1;
      			w[t]=a[i];
      			dfs(t+1,i);
      			vis[a[i]]=0;
      		}
      	}
      	return;
      }
      signed main(){
      	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
      	cin>>l>>n;
      	for(int i=1;i<=n;i++) cin>>a[i];
      	sort(a+1,a+n+1);//字典序
      	dfs(1,0);
      	return 0;
      }
      
      • 0
        @ 2025-10-18 14:26:41
        #include<bits/stdc++.h>
        using namespace std;
        int l,n,y[126],f[126];
        char a[126],b[126];
        void dfs(int deep,int yuan,int fu,int x)
        {
        	if(x==l)
        	{
        		if(yuan>=1&&fu>=2)
        		{
        			for(int i=1;i<=x;i++) cout<<b[i];
        			cout<<endl;
        		}
        		return ;
        	}
        	if(n-deep+1<l-x) return ;
        	if(yuan+y[n]-y[deep-1]==0||fu+f[n]-f[deep-1]<2) return ;
        	if(a[deep]=='a'||a[deep]=='e'||a[deep]=='i'||a[deep]=='o'||a[deep]=='u')
        	{
        		b[x+1]=a[deep];
        		dfs(deep+1,yuan+1,fu,x+1);
        	}
        	if(!(a[deep]=='a'||a[deep]=='e'||a[deep]=='i'||a[deep]=='o'||a[deep]=='u'))
        	{
        		b[x+1]=a[deep];
        		dfs(deep+1,yuan,fu+1,x+1);
        	}
        	dfs(deep+1,yuan,fu,x);
        }
        int main()
        {
        	cin>>l>>n;
        	for(int i=1;i<=n;i++)
        	{
        		cin>>a[i];
        	}
        	sort(a+1,a+n+1);
        	for(int i=1;i<=n;i++)
        	{y[i]=y[i-1];f[i]=f[i-1];
        		if(a[i]=='a'||a[i]=='e'||a[i]=='i'||a[i]=='o'||a[i]=='u') y[i]+=1;
        		 else f[i]+=1;
        	}
        	dfs(1,0,0,0);
        }
        
        • 1

        信息

        ID
        214
        时间
        1000ms
        内存
        256MiB
        难度
        4
        标签
        (无)
        递交数
        140
        已通过
        65
        上传者