这个Presentation Error
实在是坑人啊qaq,好好的DFS题目结果重点变成了输出,求助qaq
例子代码:
#include<iostream>
#include<vector>
using namespace std;
typedef long long ll;
ll n;
vector<ll> ept;
bool flag=true;
ostream &operator<<(ostream &os,vector<ll> &p){
for(ll i=0;i<p.size();i++){os<<p[i];if(i<p.size()-1)os<<" ";}
return os;
}
bool prime(ll n){
if(n==1 or n==0)return false;
if(n==2)return true;
if(n%2==0)return false;
for(ll i=3;i*i<=n;i+=2){
if(n%i==0)return false;
}
return true;
}
bool isfind(ll n,vector<ll> a){
for(ll i=0;i<a.size();i++){
if(n==a[i])return true;
}
return false;
}
void dfs(vector<ll> use){
if(use.size()>=n){
if(not prime(use[use.size()-1]+use[0]))return;
if(use[0]!=1)return;
cout<<use<<endl;
flag=false;
return ;
}
for(ll i=1;i<=n;i++){
if(isfind(i,use))continue;
if(use.size()==0 or prime(use[use.size()-1]+i)){
use.push_back(i);
dfs(use);
use.erase(use.end()-1);
}
}
}
int main(){
for(ll i=1;cin>>n;i++){
if(i>1)cout<<"\n";
cout<<"Case "<<i<<":\n";
dfs(ept);
}
return 0;
}
UVa524的代码,结果发现,每次的最后一个Case
都会输出多一个换行......而且还是在最难控制的递归DFS里......