#include <iostream>
#include <vector>
using namespace std;
#define MAX 12
struct Point {
int row;
int column;
Point ( int row = 0, int column = 0 ) : row(row), column(column) {}
};
int N = 0;
void F( int row, int grid[MAX][MAX] ) {
vector<Point> p;
if ( row == N ) {
for ( int i = 0; i < N; i++ )
for ( int j = 0; j < N; j++ )
if ( grid[i][j] == 1 ) cout << j + 1 << ' ';
cout << endl;
return;
}
for ( int column = 0 ; column < N; column++ ) {
if ( grid[row][column] == 0 ) {
grid[row][column] = 1;
p.push_back( Point( row, column ) );
// delete
for ( int i = row + 1, j = column + 1, k = column - 1; i < N ; i++, j++, k-- ) {
if ( grid[i][column] != 2 ) { // column
grid[i][column] = 2;
p.push_back( Point( i, column ) );
}
if ( i < N && j < N && grid[i][j] != 2 ) { // right slash
grid[i][j] = 2;
p.push_back( Point(i, j ) );
}
if ( i < N && k >= 0 && grid[i][k] != 2 ) { // left slash
grid[i][k] = 2;
p.push_back( Point( i, k ) );
}
}
F( row+1, grid );
while ( !p.empty() ) {
grid[p.back().row][p.back().column] = 0;
p.pop_back();
}
}
}
}
int main(){
int grid[MAX][MAX] = {0};
cin >> N;
F( 0, grid );
return 0;
}
C. 完美平方數 #include <iostream> #include <math.h> using namespace std; int numSquares(int n); int main() { int num, ans;
Jan 27, 2022E. 鐵路 本題源自於Onling Judge:514 - Rails 題目目標在於給定出站順序的前提下,利用已知入站順序1~N, 確定是否仍能夠以目標出站順序離開。 有一個簡單的想法,我們利用queue的特性來維護出站順序、 利用stack的特性來維護入站順序, 並依次比較它們的front/top是否相同,如果相同就安排出站(pop)。
Jan 27, 2022C. 組合 #include<bits/stdc++.h> using namespace std; vector<int> a; bool first=true,f=true; fstream input,output; void find(int g,vector<int> &can,int p){ if(!g){ if(!first){
Sep 19, 2021D. Flood Fill # include <bits/stdc++.h> using namespace std; int m[102][102]; struct Fill{ int x,y,t; };
Sep 16, 2021or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up