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
0
0
0
0
0
0
0
0