社区讨论

【水】关于UVa

灌水区参与者 3已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@loci7012
此快照首次捕获于
2023/10/30 14:12
2 年前
此快照最后确认于
2023/11/05 01:37
2 年前
查看原帖
这个Presentation Error实在是坑人啊qaq,好好的DFS题目结果重点变成了输出,求助qaq
例子代码:
CPP
#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里......

回复

3 条回复,欢迎继续交流。

正在加载回复...