[SCOI2005]超级格雷码
2016-08-29 14:52
260 查看
提交:bzoj1081
题目↑↑
这道题并不是很难,题意易懂,用搜索,是可以知道的
但是,十分麻烦……
然而一位神同学yzh通过打表来发现了这道题的规律……十分神奇耶……
假设是n=2 B=3:
答案是:00 10 20 21 11 01 02 12 22
分下组:
00 10 20
21 11 01
02 12 22
也就是说,当第i数是偶数时,第i-1个数是由大到小排列,当第i数是奇数时,第i-1个数是由小到大排列
magical!!!
代码↓↓
题目↑↑
这道题并不是很难,题意易懂,用搜索,是可以知道的
但是,十分麻烦……
然而一位神同学yzh通过打表来发现了这道题的规律……十分神奇耶……
假设是n=2 B=3:
答案是:00 10 20 21 11 01 02 12 22
分下组:
00 10 20
21 11 01
02 12 22
也就是说,当第i数是偶数时,第i-1个数是由大到小排列,当第i数是奇数时,第i-1个数是由小到大排列
magical!!!
代码↓↓
#include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<algorithm> using namespace std; int n,b; int a[110000]; void dfs(int k,int t) { if(k==n+1) { for(int i=n;i>=1;i--) { if(a[i]>=10) printf("%c",a[i]-10+'A'); else printf("%d",a[i]); } printf("\n"); return ; } if(t==1) { for(int i=b-1;i>=0;i--) { a[k]=i; dfs(k+1,1-i%2); } } else { for(int i=0;i<=b-1;i++) { a[k]=i; dfs(k+1,i%2); } } } int main() { scanf("%d%d",&n,&b); dfs(1,0); return 0; }
相关文章推荐
- [BZOJ 1081] [SCOI2005] 超级格雷码 【找规律】
- bzoj1081: [SCOI2005]超级格雷码
- 1081: [SCOI2005]超级格雷码
- bzoj1081 [SCOI2005]超级格雷码
- BZOJ 1081: [SCOI2005]超级格雷码 神他妈规律,DFS
- 【bzoj1081】[SCOI2005]超级格雷码
- [BZOJ1081][SCOI2005]超级格雷码(深搜)
- 【bzoj1081】[SCOI2005]超级格雷码
- [SCOI2005]超级格雷码
- bzoj1081[SCOI2005]超级格雷码
- [BZOJ1081][SCOI2005]超级格雷码
- [bzoj 1081--SCOI2005]超级格雷码
- 【bzoj1081】[SCOI2005]超级格雷码
- 【杂谈】[SCOI2005]超级格雷码
- 【BZOJ】【P1081】【SCOI2005】【超级格雷码】【题解】【乱搞】
- BZOJ1081: [SCOI2005]超级格雷码
- bzoj1081: [SCOI2005]超级格雷码
- bzoj1081: [SCOI2005]超级格雷码
- 【bzoj1075】【scoi2005】【超级格雷码】【找规律】
- [SCOI2005]超级格雷码