hdu1016
来源:互联网 发布:touch.js实现自由缩放 编辑:程序博客网 时间:2024/05/10 09:54
//这是一道很水的搜索题目,在这个题目面,我用的是栈 这种题目应该是非常简单的搜索 但是还是花了 我一些时间代码也写得不好 效率估计还挺低的
#include <stdio.h>#include <string.h>int b[1000];int a[1000];int top;void pushstack(int i){ b[++top]=i;}int popstack(){int k=b[top];top=top-1;return k;}int topstack(){//printf("%d\n",b[top]);return b[top];}int emptystack(){if(top==-1)return 1;elsereturn 0;}int sum(int i,int j){int sum1=i+j;for(i=2;i<=sum1/2;i++){if(sum1%i==0)return 0;}return 1;}void search1(int n){int i;for(i=1;i<=n;i++){ if(sum(i,topstack())==1&&a[i]==0){ pushstack(i); a[i]=1; search1(n);}}}void search(int st,int n){int i,k,flag=0;while(1){flag=0; for(i=st;i<=n;i++) { //printf("<<%d %d\n",i,topstack()); if(sum(i,topstack())==1&&a[i]==0) {pushstack(i);a[i]=1;search1(n);break; } } if(top==n-1){if(sum(b[top],1)==1){ for(i=0;i<top;i++) printf("%d ",b[i]); printf("%d\n",b[top]); } } k=popstack(); if(k==1) { break; } a[k]=0; st=k+1; for(i=st;i<=n;i++){ if(sum(i,topstack())==1&&a[i]==0) {pushstack(i);a[i]=1;st=1;flag=1;break; } } if(flag==0) { st=n+1; }}return ;}int main(){int n;int i=1,j,k;while(scanf("%d",&n)!=EOF){printf("Case %d:\n",i);i++;top=-1;memset(a,0,sizeof(a));pushstack(1);a[1]=1;search(1,n);printf("\n");}return 0;}
0 0
- hdu1016
- hdu1016
- hdu1016
- hdu1016
- hdu1016
- hdu1016
- hdu1016
- hdu1016
- hdu1016
- hdu1016
- HDU1016
- HDU1016
- hdu1016
- hdu1016
- HDU1016
- hdu1016
- hdu1016
- hdu1016
- 随机数产生原理及应用
- VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
- ES PS TS 流的区别
- 【Android】SurfaceView实战 打造抽奖转盘
- 不假思索地思考——敏捷的心智模式
- hdu1016
- java 接口RandomAccess
- Yarn简单介绍及内存配置
- makefile学习总结
- mvn中,使用spring中获取bean实例
- Python3 如何优雅地使用正则表达式(详解六)
- Linux C++的多线程编程
- 20150112
- Eclipse 设置模板代码