超新星燃烧题解

来源:互联网 发布:淘宝宝贝发布物流 编辑:程序博客网 时间:2024/06/11 07:35

由于n只有20直接按照题意模拟进行dfs即可

#include<bits/stdc++.h>int a[35],cont;void dfs(int x,int op){    if(a[x]==op)return;    if(x==1&&a[1]==1-op)    {        a[1]=op;        printf("%d: ",cont++);        if(op==1)printf("get 1 on\n");        else printf("get 1 off\n");        return;    }    if(a[x-1]==0)dfs(x-1,1);    for(int i=x-2; i>=1; i--)        if(a[i]==1)dfs(i,0);    a[x]=op;    printf("%d: ",cont++);    if(op==1)printf("get %d on\n",x);    else printf("get %d off\n",x);}void init(void){    cont=1;    memset(a,0,sizeof(a));}int main(){    int n;    while(~scanf("%d",&n))    {        init();        for(int i=n; i>=1; i--)            dfs(i,1);    }    return 0;}
原创粉丝点击