next_permutation 和 一个不成功的案例
2015-08-03 20:52
274 查看
一个失败的案例:(POJ 1009)
3+7+12=22 3+7+19=29 7+12+19=38 3+12+19=34。 而和为素数的个数即为小翔宿舍WIFI的密码。
例如上例,只有一种的和为素数:3+7+19=29,于是密码即为1。
View Code
几种常见用法:
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{
char d[100];
cin>>d;
sort(d,d+strlen(d));
char *first=d;
char *last=d+strlen(d);
do{
cout<<d<<endl;
}while(next_permutation(first,last));
return 0;
}
////////////////////////////////////////////
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{
char d[100];
cin>>d;
sort(d,d+strlen(d));
char *first=d;
char *last=d+strlen(d);
do{
cout<<d<<endl;
}while(next_permutation(first,last));
return 0;
}
//////////////////////////////////////////
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
int main() {
string dog;
while(cin>>dog&&dog!="@")
{
sort(dog.begin(),dog.end());
while(next_permutation(dog.begin(),dog.end()))
{
cout<<dog<<endl;
}
}
}
///////////////////////////////////////
题目描述
小翔同学的宿舍WIFI添加了密码,密码每天都会变更。而小翔每天都会给蹭网的同学们提供密码提示。现在请你根据密码提示,编写程序破译密码。 已知密码提示给出了n个整数 a1,a2,…,an,以及一个整数 t(t小于n)。从这n个整数中任选t个相加,可分别得到一系列的和。例如当 n=4,t=3,4 个整数分别为 3,7,12,19 时,可得全部组合的和分别为:3+7+12=22 3+7+19=29 7+12+19=38 3+12+19=34。 而和为素数的个数即为小翔宿舍WIFI的密码。
例如上例,只有一种的和为素数:3+7+19=29,于是密码即为1。
输入
n , t (1<=n<=20,t<n) a1,a2,…,an (1<=ai<=5000000)样例输入
4 3 3 7 12 19样例输出
1#include<iostream> #include<stdio.h> #include<math.h> #include<string.h> using namespace std; int i=1,j,sum,num,n,t; long int d[25]; int fun(int n) { int m; m=(int)sqrt(n); for(j=2;j<=m;j++) { if(!(n%j)) {return 0;} } return 1; } void dfs(int abc,int i,int sum) { if(abc==t&&fun(sum)) {num++;return;} for(int j=i;j<n;j++) {dfs(abc+1,j+1,sum+d[j]);} } int main() { while(scanf("%d%d",&n,&t)!=EOF) { for(int i=0;i<n;i++) scanf("%ld",&d[i]); dfs(0,0,0); cout<<num<<endl; num=sum=0; } return 0; } /************************************************************** Problem: 1009 User: 2014217052 Language: C++ Result: 正确 Time:4 ms Memory:1516 kb ****************************************************************/
View Code
几种常见用法:
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{
char d[100];
cin>>d;
sort(d,d+strlen(d));
char *first=d;
char *last=d+strlen(d);
do{
cout<<d<<endl;
}while(next_permutation(first,last));
return 0;
}
////////////////////////////////////////////
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{
char d[100];
cin>>d;
sort(d,d+strlen(d));
char *first=d;
char *last=d+strlen(d);
do{
cout<<d<<endl;
}while(next_permutation(first,last));
return 0;
}
//////////////////////////////////////////
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
int main() {
string dog;
while(cin>>dog&&dog!="@")
{
sort(dog.begin(),dog.end());
while(next_permutation(dog.begin(),dog.end()))
{
cout<<dog<<endl;
}
}
}
///////////////////////////////////////
相关文章推荐
- PYTHON对文件及文件夹的一些操作
- Android测试写入文本Log
- PAT 1009. Product of Polynomials (25)
- 怎么解决UIScrollView把uitableviewcell的点击事件屏蔽了
- 【八校联考2013】军训
- MongoDB 在windows shell环境下的基本操作和命令的使用示例(五)
- 华为S6700交换机配置
- 对应答报文中实体信息的处理(json数据解析)
- 关于豌豆荚更新软件很慢的问题
- PKU 1703:Find them, Catch them
- C#读取文件:按行读取
- android studio使用模拟器上时出现中文乱码问题解决方法
- Binary Tree Level Order Traversal II
- JavaScript 堆内存分析新工具 OneHeap
- hdoj 1016 Prime Ring Problem
- MongoDB——简介与安装
- HDU2544 最短路(dijkstra算法)
- Oil Deposits
- hihoCoder 1114 小Hi小Ho的惊天大作战:扫雷·一
- JIURL玩玩Win2k进程线程篇 PEB