【水】关于UVa
  • 板块灌水区
  • 楼主xtracer
  • 当前回复3
  • 已保存回复3
  • 发布时间2021/3/25 22:03
  • 上次更新2023/11/5 01:37:10
查看原帖
【水】关于UVa
341049
xtracer楼主2021/3/25 22:03

这个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里......

2021/3/25 22:03
加载中...