- 博客(21)
- 资源 (2)
- 收藏
- 关注
原创 uva-10344 - 23 out of 5
全排列+回溯(不过用的是DFS,囧)题意:给出5个数字,顺序可以任意排列,有三种运算:加、减、乘,不考虑优先级,按顺序计算,判断能否有一种方案得出的结果是23。#include#include#include#includeusing namespace std;int a[5];int leapp;void dfs(int x,int num){ if(n
2012-08-20 18:35:44 1506
原创 uva-729 - The Hamming Distance Problem-全排列
全排列,函数一步搞定题意:给一两个数n,m;求n个数中有m个1的所有情况#include#include#include#includeusing namespace std;int main(){ int n,i,x,y; int a[20]; scanf("%d",&n); while(n--) { memset(
2012-08-20 15:10:46 1653
原创 uva-10098-Generating Fast-全排列典例
#include#include#includeusing namespace std;int main(){ int n; char str[1000]; cin>>n; while(n--) { cin>>str; sort(str,str+strlen(str)); cout<<str<<end
2012-08-17 21:09:54 890
原创 uva-140-全排序
记住一个全排序的函数:next_permutation(shu,shu+k);#include#include#include#include#include#include#includeusing namespace std;int map[30][30];int put[10];int xmin,k;void fan(int *shu){ int T=0;
2012-08-17 20:27:58 877
转载 使用STL的next_permutation函数生成全排列(C++)
在C++ Reference中查看了一下next_permutation的函数声明:#include bool next_permutation( iterator start, iterator end );The next_permutation() function attempts to transform the given range of elements [
2012-08-17 16:47:24 4669
原创 POJ-2187-凸包
凸包的求法: 1. 在所有点中选取y坐标最小的一点H,当作基点。如果存在多个点的y坐标都为最小值,则选取x坐标最小的一点。坐标相同的点应排除。然后按照其它各点p和基点构成的向量与x轴的夹角进行排序,夹角由大至小进行顺时针扫描,反之则进行逆时针扫描。实现中无需求得夹角,只需根据向量的内积公式求出向量的模即可。以下图为例,基点为H,根据夹角由小至大排序后依次为H,K,C,D,L,F,G,E,I,
2012-08-16 20:30:22 1011
原创 hdu-1075-What Are You Talking About-(字典树)
可以在字典树里面标记各种变量。#include#include#includeusing namespace std;struct list{ int leap; char str[100]; struct list *next[26];};struct list *tree;struct list *code(){ int i;
2012-08-15 20:55:51 562
原创 SDUT-1500-(字典树)
字典树,注意到最后用完字典树的时候把字典树删除,要不容易产生空间不足。#include#include#include#includeusing namespace std;struct list{ int leap; struct list *num[26];};int number;char str[10];struct list *code(){
2012-08-15 20:54:47 664
原创 uva-146 - ID Codes
恩,一道规律题。对于一个字符串,先从后往前找,找到一个字母比他后面的那么字母小的,这个字母就应该替换掉。再从后往前找,如果一个字母比被替换掉的字符大,那么就交换这两个字母。输出的时候先按顺序输出被替换掉字母前的字符。然后逆序输出之后的字符。#include#includeint main(){ int i,n,j; char str[100],ipos;
2012-08-15 19:46:18 1317
原创 uva-133 - The Dole Queue
数据结构的一道题目,n的范围很小,所以直接暴力就行#include#includeint point[100];int main(){ int n,k,m,ipos,jpos,ks,ms,top,leap; while(scanf("%d%d%d",&n,&k,&m)&&(n||m||k)) { top=n; memset(poi
2012-08-15 19:13:56 677
转载 计算几何
转载:http://www.cnblogs.com/pony1993/archive/2012/08/14/2637377.html计算几何算法计算几何 一、引言 计算机的出现使得很多原本十分繁琐的工作得以大幅度简化,但是也有一些在人们直观看来很容易的问题却需要拿出一套并不简单的通用解决方案,比如几何问题。作为计算机科学的一个分支,计算几何主要研究解决几何问题的算法。在现代工
2012-08-14 21:49:26 693
转载 字典树
出处:http://www.cnblogs.com/pony1993/archive/2012/07/18/2596730.html(秦神的博客)字典树(Trie树) 字典树,又称单词查找树,Trie树,是一种树形结构,典型应用是用于统计,排序和保存大量的字符串,所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来节约存储空间,最大限度的减少无谓的字符
2012-08-13 17:34:07 781
原创 hud-1247-Hat’s Words
这道题目是字典树的典型题目。字典树详见链接:http://www.cnblogs.com/pony1993/archive/2012/07/18/2596730.html令人很郁闷的是把输入改成 while(scanf("%s",ch)!=EOF) 就AC了……用 while(gets(ch)!=NULL) 一直WA……;代码:#include#include#inclu
2012-08-13 17:31:07 680
原创 POJ-1837-Balance-0 1背包
背包问题,先找状态方程。输入c,g。c代表挂钩的数量。g代表砝码的数量。然后输入c个数代表挂钩的位置。g个数代表砝码的质量。判断当g个砝码都放上去的时候,平衡状态一共有几种。对于可能的状态为-7500~7500(7500=15*20*25)即为0~15000;设立状态数组dp[21][15000];21代表着放上去的砝码的个数,共有20种可能,因为最多只有20个砝码。1
2012-08-10 17:09:44 644
原创 usaco-1.1.1
第一道题,我什么也不说了,交了11次,谨以此题来表达一下对usaco格式的无奈。保存一下格式,以后用/*ID: rowanha3LANG: CTASK: ride*/#include#includeint pan(char *str){ int n,sum,i; n=strlen(str); sum=1; for(i=0;i<n;i++)
2012-08-08 16:14:49 630
原创 最小生成树
最小生成树有两种算法,一种是克鲁斯卡尔(Kruskal)算法。这种算法只与边相关,所以在定义数组的时候定义一个结构体struct list{ int x;//边的一个点 int y;//边的另一个点 int l;//边的权值}s[500];//存储边1.先对所有的边按照权值排序。2.找到最小的那个边,查看边的两点是不是都找到了,如果不是,继续下一步。
2012-08-06 21:15:33 453
原创 hdu oj-1175-连连看
无奈了,终于把这道题目A了,一天了~~~~标记好变量,注意四个方向有各自的标记。当这个方向的visit已经被标记了,那么就不走这里。还有就是多练练STL的应用。#include #include #include#include using namespace std;struct list { int x; int y;
2012-08-06 15:54:51 553
原创 并查集
并查集主要运用于一些带有连带关系的题目。比如说,A是B的朋友,B是C的朋友。那么A是C的朋友。给你一系列的人,和这些人之间的关系。然后让你求一共有多少个关系,或者A,B之间是否存在关系。也可运用于一些点,求最少需要几个边才能形成一张连通图~运用步骤:初始化 把每个点所在集合初始化为其自身。 通常来说,这个步骤在每次使用该数据结构时只需要执行一次,无论
2012-08-03 21:39:55 472
原创 uva-10305 - Ordering Tasks
拓扑排序,刚刚讲的就用到了/。。。。直接套模板就行~~~~#include#includeint map[150][150];int in[150];int visit[150];int main(){ int m,n,a,b,i,j,leap; while(scanf("%d%d",&n,&m)&&(n||m)) { m
2012-08-03 20:00:12 1259
原创 拓扑排序
拓扑排序是用于图的算法的一种。适用于对于一些有偏序关系的图。比如说比赛排名,大学课堂选修之类的。要求昨完某件事情才能做另一件事情,输出做事情的次序。在一个图中。确定好次序关系后。入度为0的那个点必代表着最先需要做的事情。然后输出这个点。再把这个点出度指向的地方全部入度减一。就这样一直下去,知道全部输出结束。 hdu 1285 #include#includein
2012-08-02 20:32:30 599
原创 uva-10004 - Bicoloring
dfs,又一次加深了印象。我感觉用BFS更简单。。。#include#includestruct list{ int num[300]; int leap; int color;}s[500];int leap;void dfs(int x,int y){ int i; if(s[x].color!=-1&&s[x].color!=y) { leap=0;
2012-08-01 20:58:45 971
餐饮管理系统设计说明书
2014-12-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人