###### tags: `I2P(I)Hu2022`
# 13679 - ZvP
> by schdoel
## Brief
On a nxn grid, place n starfruits such that no starfruit would get hit by bullets, and maximize the total points.
## Solution
n each row we try all the plans of placing a starfruit and simultaneously make sure no starfruit would attack another starfruit. Suppose we are placing the i-th star in the i-th row. We need to check all the stars in previous rows whether they would attack the starfruit for the plan you are trying now. We can use the similar strategy from 8 Queens problem to achieve checking.
## Reference Code
```cpp=
#include<stdio.h>
int n;
int grid[11][11]={0};
int col[11];
int digLeft[100];
int digRight[100];
long long max=-12345678912345ll;
void star(int row, long long sum){
if(row==n){
if(sum>max) max=sum;
return;
}
for(int collumn=0; collumn<n; collumn++){
if(!col[collumn] && !digLeft[collumn+row] && !digRight[collumn-row+n]){
col[collumn] = digLeft[collumn+row] = digRight[collumn-row+n] = 1;
star(row+1, sum + grid[row][collumn]);
col[collumn] = digLeft[collumn + row] = digRight[collumn - row + n] = 0;
}
}
}
int main(){
scanf("%d", &n);
for(int i=0; i<n;i++){
for(int j=0; j<n; j++){
scanf("%d", &grid[i][j]);
}
}
star(0,0);
if(max!=-12345678912345ll) printf("%lld\n", max);
else printf("no solution\n");
return 0;
}
```