问题标题: 5076

0
0
已解决
包涵宇
包涵宇
中级天翼
中级天翼

 

4935   下一个排列

TLE 40

@董子墨 

#include<bits/stdc++.h>
using namespace std;
int n,a[25],b[25],p[25],ff;
void dfs(int y){
    if(y>n){
    	if(ff==1){
    		for(int i=1;i<=n;i++)cout<<b[i]<<" ";
    		exit(0);
		}
    	bool f=1;
    	for(int i=1;i<=n;i++)if(b[i]!=a[i]){
			f=0;
			break;
		}
		if(f)ff=1;
        return ;
    }
    for(int i=1;i<=n;i++){
    	if(!p[i]){
    		p[i]=1;
    		b[y]=i;
        	dfs(y+1);
        	p[i]=0;
		}
    	
    }
}
int main(){
	cin>>n;
    for(int i=1;i<=n;i++)cin>>a[i];
    dfs(1);
    return 0;
}

深搜

PS:好气啊!

包涵宇在2020-07-26 19:00:50追加了内容

!!!

包涵宇在2020-07-29 11:16:40追加了内容

好吧,改一下问题

5076

tle 90

#include<bits/stdc++.h>
using namespace std;
long long p=2;
bool b[200000005];
int main(){
	for(int i=2;i<=200000000;i++){
		int n=i;
		p=2;
		printf("%d ",i);
		memset(b,0,sizeof(b));
		while(n!=1){
			if(n%p==0){
				if(b[p]==0){
					b[p]=1;
					printf("%d ",p);
				}
				n/=p;
			}
			else
				p++;	
		}
		printf("\n");
	}
	
    return 0;
}

@董子墨!!!

包涵宇在2020-07-30 16:23:58追加了内容

我的代码:

#include<bits/stdc++.h>
using namespace std;
long long n,p=2;
bool b[200000005];
int main(){
    cin>>n;
    while(n!=1){
        if(n%p==0){
            if(b[p]==0){
                b[p]=1;
                cout<<p<<" ";
            }
            n/=p;
            //cout<<n<<"\n";
        }
        else{
            p++;
            //cout<<n<<"\n";	
        }
    }
    return 0;
}

 


0
已采纳
李瑞曦
李瑞曦
高级天翼
高级天翼

本人弱鸡一个,不会

PS:好气啊!

PPSS:采纳我吧

0
0
0
0
0
赵逸凡
赵逸凡
初级启示者
初级启示者

常数优化,了解一下

0
0
王俊杰
王俊杰
高级光能
高级光能

问老师,本菜鸡只能帮到这了

0
我要回答