#134: 不知道為甚麼錯QAQ


hamster (hamster)

School : 彰中
ID : 2767
IP address : [106.1.121.165]
Last Login :
2023-05-28 10:11:07
d008. 習題 Q-1-10. 最多得分的皇后 -- AP325 | From: [106.1.121.165] | Post Date : 2023-01-01 15:57

#include<bits/stdc++.h>

using namespace std;

using vi=vector<int>;

using vii=vector<vi>;

int n,ans=-99999999;

vii v;

vi use;

void dfs(int lv,int sum){

if(lv==n){

    ans=max(ans,sum);

    return;

}

else{

    bool canuse[n]={};

    for(bool &i:canuse)

        i=1;

    for(int i=0;i<lv;i++){

        if(canuse[i]==-1)

            continue;

        else{

            if(abs(0<=lv-i+use[i])<=n-1)

            canuse[abs(lv-i+use[i])]=0;

            if(abs(0<=lv-i-use[i])<=n-1)

            canuse[abs(lv-i-use[i])]=0;

            canuse[use[i]]=0;

        }

    }

    for(int i=0;i<n;i++){

        if(canuse[i]){

            use[lv]=i;

            dfs(lv+1,sum+v[i][lv]);

        }

 

    }

    use[lv]=-1;

    dfs(lv+1,sum);

}

return;

}

int main(){

cin>>n;

use.resize(n);

v.resize(n);

for(vi &i:v)

    i.resize(n);

for(vi &i:v)

for(int &j:i)

cin>>j;

dfs(0,0);

cout<<ans<<endl;

return 0;

}

 
ZeroJudge Forum