170. 加成序列 - AcWing题库(dfs+迭代加深--重点理解)
#include
using namespace std;
int n;
int a[11];
int dfs(int x,int h){
if(x>h+1)return 0;
if(a[x-1]==n)return 1;
bool st[130]={};
for(int i=1;i<=x-1;i++){
for(int j=1;j<=i;j++){
int sum=a[i]+a[j];
if(sum>n||sum<=a[x-1]||st[sum])continue;
st[sum]=true;
a[x]=sum;
if(dfs(x+1,h))return 1;
}
}
return 0;
}
int main(){
a[1]=1;
while(cin>>n&&n){
vis[1]=true;
a[1]=1;
int p=1;
while(!dfs(2,p)){
p++;
}
for(int i=1;i<=p;i++){
cout<
171. 送礼物 - AcWing题库(双向搜索--重点理解)
#include
#include
#include
173. 矩阵距离 - AcWing题库(模板稍微变形)
#include
#include
#include
#include
using namespace std;
int n,m;
string s[1005];
int a[1005][1005];
bool vis[1005][1005];
struct node{
int xx,yy;
int step;
};
int cnt[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
queueq;
int in(int x,int y){
if(x>=n||y>=m||x<0||y<0)return 0;
return 1;
}
void bfs(){
while(!q.empty()){
node temp=q.front();
q.pop();
node t;
t.step=temp.step+1;
for(int i=0;i<4;i++){
t.xx=temp.xx+cnt[i][1];
t.yy=temp.yy+cnt[i][0];
if(!in(t.xx,t.yy))continue;
if(s[t.xx][t.yy]=='0'&&a[t.xx][t.yy]==0)a[t.xx][t.yy]=t.step;
if(!vis[t.xx][t.yy])q.push(t);
vis[t.xx][t.yy]=true;
}
}
}
int main(){
cin>>n>>m;
for(int i=0;i>s[i];
}
for(int i=0;i
B-游游的排列构造_牛客周赛 Round 5 (nowcoder.com)(签到)
#include
#include
#include
#include
using namespace std;
int main(){
int m,k;
cin>>m>>k;
int a=m-k+1;
int b=1;
while(b
C-游游的二进制树_牛客周赛 Round 5 (nowcoder.com)(dfs)
#include
#include
#include
#include
#include
4122. 字符串转换 - AcWing题库
#include
#include
#include
#include
#include