820. 瞭望格
#include <bits/stdc++.h>
using namespace std;
const int N = 55;
char a[N][N];
int n,m;
int main()
{cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>a[i][j];}}int ans=0;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(a[i][j]=='.'){ int f=0;for(int k=1;k<=n;k++){if(a[k][j]=='#'){f=1;break;}}for(int k=1;k<=m;k++){if(a[i][k]=='#'){f=1;break;}}if(f==0)ans++;}}}cout<<ans<<endl;
}
759. 扫雷游戏
#include <bits/stdc++.h>
using namespace std;
const int N = 105;
char a[N][N];
int b[N][N];
int n,m;
int dx[4]={0,1,-1},dy[4]={0,1,-1};
int main()
{cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>a[i][j];}}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(a[i][j]=='*'){for(int k=0;k<=2;k++){for(int p=0;p<=2;p++){b[i+dx[k]][j+dy[p]]++;}}}}}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(a[i][j]=='*')cout<<a[i][j];else cout<<b[i][j];}cout<<endl;}}
186. 三角形的个数
#include <bits/stdc++.h>
using namespace std;
const int N = 3005;
typedef long long ll;int n,m;
ll a[N];
int f[N]={0};
int ans=0;
vector<int> v,va;
int main()
{int t;cin>>t;int p = t;while(t--){cin>>n;for(int i=1;i<=n;i++)cin>>a[i];sort(a+1,a+n+1);int ans=0;for(int i=1;i<=n-2;i++){for(int j=i+1;j<=n-1;j++){ll t=a[i]+a[j];ll k=lower_bound(a+1,a+n+1,t)-a;k--;ans+=k-j;}} cout<<"Case "<<p-t<<": "<<ans<<endl;}
}
844. 奇怪的机器人
#include <bits/stdc++.h>
using namespace std;
int n,m;
const int N=105;
char a[N][N];
int dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};
int sx,sy,ex,ey;
int ans=0;
int vis[15][15];
void dfs(int x,int y)
{if(x<=0||x>n||y<=0||y>n)return ;for(int i=0;i<=3;i++){int nx=x+dx[i],ny=y+dy[i];if(vis[nx][ny])continue;if(nx==ex&&ny==ey)ans++;if(a[nx][ny]=='.'){vis[nx][ny]=1;dfs(nx,ny);vis[nx][ny]=0;}}
}
int main()
{cin>>n;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)cin>>a[i][j];cin>>sx>>sy>>ex>>ey;if(sx==ex&&sy==ey){cout<<"The chessboard has "<<1<<" paths."<<endl; return 0;}vis[sx][sy]=1;dfs(sx,sy);cout<<"The chessboard has "<<ans<<" paths."<<endl;}
155. 好朋友排队
#include <bits/stdc++.h>
using namespace std;
const int N = 1005;
int n,m;
int a[N][N];
int f[N]={0};
int ans=0;
vector<int> v,va;
void dfs(int cnt)
{if(cnt==n){int c=0;for(int i=1;i<v.size();i++){if(a[v[i]][v[i-1]])c++;} if(c>ans){va.clear();ans=c;va=v;return;}return;}for(int i=1;i<=n;i++){if(f[i]==0){f[i]=1;v.push_back(i);dfs(cnt+1);v.erase(v.end()-1);f[i]=0;}}
}
int main()
{cin>>n>>m;while(m--){int l,r;cin>>l>>r;a[l][r]=1;a[r][l]=1;}dfs(0);cout<<ans<<endl;for(int i=0;i<va.size();i++){cout<<va[i]<<" ";}
}