求助!

CF977D Divide by three, multiply by two

```cpp #include<cstdio> #define ll long long using namespace std; ll n,awa,i,a[1001],b[1001],f[1001]; void dfs(ll x,ll k) { f[k]=x; if(k==n) { for(ll j=1;j<=n;j++) printf("%lld ",f[j]); awa=1; return ; } if(awa==1) return ; for(ll j=1;j<=n;j++) if((a[j]==x*2||a[j]*3==x)&&!b[j]) { b[j]=1; dfs(a[j],k+1); b[j]=0; } return ; } int main() { scanf("%lld",&n); for(i=1;i<=n;i++) scanf("%lld",&a[i]); for(i=1;i<=n&&!awa;i++) b[i]=1,dfs(a[i],1),b[i]=0; return 0; } ```
by wjy2006 @ 2019-09-13 20:16:38


@[Bilion_冰凌帅](/space/show?uid=54372) (slay-dalao)
by wjy2006 @ 2019-09-13 20:17:03


@[Bilion_冰凌帅](/space/show?uid=54372) 您复制一遍我的程序是什么意思qwp 还有我是slay-juruo
by A_Đark_Horcrux @ 2019-09-13 20:21:14


``` #include<cstdio> #define ll long long using namespace std; ll n,awa,i,a[1001],b[1001],f[1001]; void dfs(ll x,ll k) { f[k]=x; if(k==n) { for(ll j=1;j<=n;j++) printf("%lld ",f[j]); awa=1; return ; } if(awa==1) return ; for(ll j=1;j<=n;j++) if((a[j]==x*2||a[j]*3==x)&&!b[j])//here { b[j]=1; dfs(a[j],k+1); b[j]=0; } return ; } int main() { scanf("%lld",&n); for(i=1;i<=n;i++) scanf("%lld",&a[i]); for(i=1;i<=n&&!awa;i++) b[i]=1,dfs(a[i],1),b[i]=0; return 0; } ```
by wjy2006 @ 2019-09-13 20:22:21


@[Bilion_冰凌帅](/space/show?uid=54372) 你要首先判断是否是2或3 的倍数QWQ
by 梧桐灯 @ 2019-09-13 20:22:24


把a[j]==x/3改成a[j]*3==x
by wjy2006 @ 2019-09-13 20:22:52


@[wjy2006](/space/show?uid=140780) @[光随影走](/space/show?uid=31193) 啊谢谢qwq
by A_Đark_Horcrux @ 2019-09-13 20:27:10


这题有没有人和我一样写哈希过的?
by IceNagisa @ 2021-08-12 11:47:34


|