This commit is contained in:
Zengtudor 2024-09-17 18:55:15 +08:00
parent 3b38ed3212
commit cf2b7c528a
5 changed files with 115 additions and 108 deletions

View File

@ -1,4 +1,5 @@
#include<bits/stdc++.h> #include<iostream>
#include<map>
using namespace std; using namespace std;
typedef long long ll; typedef long long ll;

View File

@ -1,4 +1,5 @@
#include<bits/stdc++.h> #include<iostream>
#include<sstream>
using namespace std; using namespace std;
// bool is_pf(int n){ // bool is_pf(int n){

View File

@ -1,98 +1,104 @@
#include<bits/stdc++.h> // #include<iostream>
using namespace std; // #include<optional>
// #include <utility>
// using namespace std;
int m[10][10]; // int m[10][10];
bool h_is_used[10][10],l_is_used[10][10],t_is_used[5][5][10]; // bool h_is_used[10][10],l_is_used[10][10],t_is_used[5][5][10];
#ifdef OI // #ifdef OI
#define DB(code){code} // #define DB(code){code}
#define PV(v){cout<<#v<<" : "<<(v)<<endl;} // #define PV(v){cout<<#v<<" : "<<(v)<<endl;}
#else // #else
#define DB(code) // #define DB(code)
#define PV(v) // #define PV(v)
#endif // #endif
void dfs(int x,int y); // void dfs(int x,int y);
optional<pair<int,int>> find_next(int x,int y); // optional<pair<int,int>> find_next(int x,int y);
// int main(){
// for(int i=1;i<=9;i++){
// string str;
// getline(cin,str);
// for(int j=1;j<=9;j++){
// if(str[j-1]=='.'){
// m[i][j]=-1;
// }else{
// m[i][j]=str[j-1]-'0';
// h_is_used[i][m[i][j]]=true;
// l_is_used[j][m[i][j]]=true;
// t_is_used[i/3+1][j/3+1][m[i][j]]=true;
// }
// }
// }
// DB(
// for(int i=1;i<=9;i++){
// for(int j=1;j<=9;j++){
// cout<<m[i][j]<<"\t";
// }
// cout<<endl;
// }
// )
// auto find = find_next(1, 1);
// if(find.has_value()==false){
// for(int i=1;i<=9;i++){
// for(int j=1;j<=9;j++){
// cout<<m[i][j];
// }
// cout<<endl;
// }
// exit(0);
// }
// dfs(find->first, find->second);
// }
// optional<pair<int,int>> find_next(int x,int y){
// for (int j=y+1; j<=9; j++) {
// if(m[x][j]==-1){
// return make_optional<pair<int,int>>({x,j});
// }
// }
// for(int i=x+1;i<=9;i++){
// for(int j=1;j<=9;j++){
// if(m[i][j]==-1){
// return make_optional<pair<int,int>>({i,j});
// }
// }
// }
// return nullopt;
// }
// void dfs(int x,int y){
// DB(PV(x)PV(y)cout<<endl;)
// auto find = find_next(x, y);
// if(find.has_value()==false){
// for(int i=1;i<=9;i++){
// for(int j=1;j<=9;j++){
// cout<<m[i][j];
// }
// cout<<endl;
// }
// exit(0);
// }
// for(int i=1;i<=9;i++){
// if(h_is_used[x][i]||l_is_used[y][i]||t_is_used[x/3+1][y/3+1][i]){
// continue;
// }
// h_is_used[x][i]=true,
// l_is_used[y][i]=true,
// t_is_used[x/3+1][y/3+1][i]=true;
// m[x][y]=i;
// dfs(find->first, find->second);
// h_is_used[x][i]=false;
// l_is_used[y][i]=false;
// t_is_used[x/3+1][y/3+1][i]=false;
// m[x][y]=-1;
// }
// }
int main(){ int main(){
for(int i=1;i<=9;i++){
string str;
getline(cin,str);
for(int j=1;j<=9;j++){
if(str[j-1]=='.'){
m[i][j]=-1;
}else{
m[i][j]=str[j-1]-'0';
h_is_used[i][m[i][j]]=true;
l_is_used[j][m[i][j]]=true;
t_is_used[i/3+1][j/3+1][m[i][j]]=true;
}
}
}
DB(
for(int i=1;i<=9;i++){
for(int j=1;j<=9;j++){
cout<<m[i][j]<<"\t";
}
cout<<endl;
}
)
auto find = find_next(1, 1);
if(find.has_value()==false){
for(int i=1;i<=9;i++){
for(int j=1;j<=9;j++){
cout<<m[i][j];
}
cout<<endl;
}
exit(0);
}
dfs(find->first, find->second);
}
optional<pair<int,int>> find_next(int x,int y){
for (int j=y+1; j<=9; j++) {
if(m[x][j]==-1){
return make_optional<pair<int,int>>({x,j});
}
}
for(int i=x+1;i<=9;i++){
for(int j=1;j<=9;j++){
if(m[i][j]==-1){
return make_optional<pair<int,int>>({i,j});
}
}
}
return nullopt;
}
void dfs(int x,int y){
DB(PV(x)PV(y)cout<<endl;)
auto find = find_next(x, y);
if(find.has_value()==false){
for(int i=1;i<=9;i++){
for(int j=1;j<=9;j++){
cout<<m[i][j];
}
cout<<endl;
}
exit(0);
}
for(int i=1;i<=9;i++){
if(h_is_used[x][i]||l_is_used[y][i]||t_is_used[x/3+1][y/3+1][i]){
continue;
}
h_is_used[x][i]=true,
l_is_used[y][i]=true,
t_is_used[x/3+1][y/3+1][i]=true;
m[x][y]=i;
dfs(find->first, find->second);
h_is_used[x][i]=false;
l_is_used[y][i]=false;
t_is_used[x/3+1][y/3+1][i]=false;
m[x][y]=-1;
}
} }

View File

@ -1,4 +1,4 @@
#include<bits/stdc++.h> #include<iostream>
using namespace std; using namespace std;
typedef long long ll; typedef long long ll;

View File

@ -1,5 +1,4 @@
#include <cmath> #include <cmath>
#include <cstdio>
#include<iostream> #include<iostream>
#include <numeric> #include <numeric>
#include <sstream> #include <sstream>
@ -17,16 +16,16 @@ std::ostream& operator<<(std::ostream &os,const std::vector<int> &v){
} }
template<typename ...Args> template<typename ...Args>
void print(const Args& ...args){ void zprint(const Args& ...args){
((std::cout<<args),...); ((std::cout<<args),...);
} }
template<typename ...Args> template<typename ...Args>
void println(const Args& ...args){ void zprintln(const Args& ...args){
std::stringstream ss; std::stringstream ss;
((ss<<args<<" "),...); ((ss<<args<<" "),...);
ss<<"\n"; ss<<"\n";
print(ss.str()); zprint(ss.str());
} }
#define NAME_VALUE(v)#v,":",(v) #define NAME_VALUE(v)#v,":",(v)
@ -34,21 +33,21 @@ void println(const Args& ...args){
int main(){ int main(){
println("Hello,World!","-by","Zengtudor"); zprintln("Hello,World!","-by","Zengtudor");
println("End"); zprintln("End");
println(NAME_VALUE(std::pow(2,10))); zprintln(NAME_VALUE(std::pow(2,10)));
println(NAME_VALUE((int)0x7FFFFFFF)); zprintln(NAME_VALUE((int)0x7FFFFFFF));
std::vector<int> v(10); std::vector<int> v(10);
v[0]=1; v[0]=1;
for(int i=1;(u8)i<v.size();i++){ for(int i=1;(u8)i<v.size();i++){
v[i]=(v[i-1]*3+2)%49; v[i]=(v[i-1]*3+2)%49;
} }
println(NAME_VALUE(v)); zprintln(NAME_VALUE(v));
println(NAME_VALUE(std::pow(3, 8))); zprintln(NAME_VALUE(std::pow(3, 8)));
println(NAME_VALUE(std::gcd(41184, 65208))); zprintln(NAME_VALUE(std::gcd(41184, 65208)));
for(int i=1;i<=1e4;i++){ for(int i=1;i<=1e4;i++){
print(i,","); zprint(i,",");
} }
print("\n"); zprint("\n");
} }