hdu1016
来源:互联网 发布:知乎 一出国就爱国 编辑:程序博客网 时间:2024/05/21 00:16
素数环问题,这道题是白皮书上的例子,在回溯法那节。
刚开始写搜索的题,菜鸟一只,很多都还不会。
//是不是两两互素之后剩下的两个也一定互素?no ,for example 1 2 3//显然算法不对。。。// 结果成功后结果是如何存储的 ?如何输出//#include<iostream>#include<cstring>#include<cstdio>using namespace std;int n;int vis[30];int a[30];int prime[]={2,3,5,7,11,13,17,19,23,29,31,37,39};bool pri[42];void dfs(int cur){ if(cur==n && pri[a[0]+a[n-1]]) { for(int i=0;i<n-1;i++) cout<<a[i]<<" "; cout<<a[n-1]<<endl; } else { for(int i=2;i<=n;i++) { if(!vis[i] && pri[i+a[cur-1]]) { a[cur]=i; vis[i]=1; dfs(cur+1); vis[i]=0; } } }}int main(){ int cas=1,i; memset(pri,false,sizeof(pri)); for(i=0;i<13;i++) if(prime[i])pri[prime[i]]=true; while(~scanf("%d",&n)) { cout<<"Case "<<cas++<<":"<<endl; memset(vis,false,sizeof(vis)); a[0]=1; dfs(1); cout<<endl; }}
另外,顺便也把书上的几个简单例子敲了一下
八皇后
#include<iostream>#include<cstdio>#include<cstring>using namespace std;int C[100];bool vis[3][100];int n,tot;void search(int cur){if(cur==n){tot++;return ;}for(int i=0;i<n;i++)//遍历每一列 {int flag=1;C[cur]=i; for(int j=0;j<cur;j++){if(C[j]==C[cur] || j-C[j]==cur-C[cur] || j+C[j]==cur+C[cur]){flag=0;break;}} if(flag)search(cur+1);}}void huisu(int cur){if(cur==n){tot++;return ;}else for(int i=0;i<n;i++){if(!vis[0][i] && !vis[1][cur+i] && !vis[2][cur-i+n]){vis[0][i]=vis[1][cur+i]=vis[2][cur-i+n]=1;search(cur+1);vis[0][i]=vis[1][cur+i]=vis[2][cur-i+n]=0;}}}int main(){scanf("%d",&n);search(0);cout<<tot<<endl;}困难的串
这个题,判断是否有相同的子串那有点不太好懂,基础太差,看这些还是要想一想,可能过两天就又忘了。。。。
j 代表长度为j*2的后缀
#include<iostream>#include<cstdio>#include<cstring>using namespace std;int n,l;int c[100];int dfs(int cur){if(cur==n){for(int i=0;i<n;i++)printf("%c",'A'+c[i]); cout<<endl;return 0;} else for(int i=0;i<l;i++) { int flag=1; c[cur]=i; //cout<<i<<endl; for(int j=1;j*2<=cur+1;j++) { //cout<<j<<endl; int equal=1; for(int k=0;k<j;k++) { //cout<<cur-k<<" "<<cur-k-j<<endl; if(c[cur-k]!=c[cur-k-j]) { equal=0; break; } } if(equal){flag=0;break;} } if(flag)if(!dfs(cur+1))return 0; } return 1;}int main(){while(~scanf("%d%d",&n,&l)){c[0]=0;dfs(1);}}
0 0
- hdu1016
- hdu1016
- hdu1016
- hdu1016
- hdu1016
- hdu1016
- hdu1016
- hdu1016
- hdu1016
- hdu1016
- HDU1016
- HDU1016
- hdu1016
- hdu1016
- HDU1016
- hdu1016
- hdu1016
- hdu1016
- poj3624Charm Bracelet
- 重温线性代数(3)——正交、投影
- 用了牡蛎王,老公满血复活又坚挺起来了
- 用了牡蛎王,老公满血复活又坚挺起来了
- objective-C中的扩展方法与partial class
- hdu1016
- wireshark语法过滤
- Excel 删除一行的快捷键
- 广义表建树算法
- 打印顺三角形+倒三角形
- Same Tree
- 【QEMU-KVM代码分析之三】IO thread源码浅析之main loop
- C# bin目录和obj目录解析
- ubuntu远程连接windows7旗舰版能够ping,远程连接提示unable to connect