- 博客(12)
- 收藏
- 关注
原创 【wikioi】1078最小生成树 floyd 改 仍40分代码
//floyd#include#include#define INF 120000 #define MAXN 110int dist[MAXN][MAXN];int path[MAXN][MAXN];int main(void){ int i,j; int n; scanf("%d",&n); for(i=1;i<=n;i++) { for(j
2013-12-17 21:38:45 562
原创 【wikioi】1078最小生成树 prim 100分C源码
#include#include#define INF 120000 #define MAXV 110int main(void){ int i,j; int k; int vis[MAXV]={0},v[MAXV][MAXV]; int n; int min,minpos; int ans; scanf("%d",&n); for(i=0;
2013-12-16 21:51:26 602
原创 【wikioi】1078最小生成树 floyd 40分C源码
//floyd#include#include#define INF 120000 #define MAXN 110int dist[MAXN][MAXN];int main(void){ int i,j; int n; scanf("%d",&n); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) {
2013-12-16 21:50:07 498
转载 【回溯】困难的串
《算法竞赛入门经典》P128 复习如果一个字符串包含两个相邻的重复字串,则称它是“容易的串”,其他串称为“困难的串”。例如,BB,ABCDACABCAB,ABCDABCD都是容易的,而D,DC,ABDAB,CBABCBA都是困难的。输入正整数n和L,输出由前L个字符组成的,字典序第k小的困难的串。例如,当L=3时,前7个困难的串分别为:A,AB,ABA,ABAC,ABACA,A
2013-12-11 20:54:31 856
转载 【枚举排序】生成可重集排序
#include#include#define MAXN 10void qsort(int a[], int l, int r){ if(l>=r) return; int i=l, j=r, x=a[(i+j)>>1]; a[(i+j)>>1] = a[i]; a[i] = x; do{ while(i= x) j--; if(i<j) {a[i] = a[j]; i+
2013-12-10 21:39:24 545
转载 【枚举排列】字典序输出
//《算法竞赛入门经典》P117思考#include#include#define MAX 50//递归实现字典序排列 void print_permutation(int n,int *A,int cur)//n为元素数量,A为用来递归调用的数组,cur为数组标号{ int i,j; if(cur==n) { for(i=0;i<n;i++) printf("%
2013-12-10 21:36:14 713
转载 【高精度计算】《算法竞赛入门经典》bign类型运算符重载
#include#includeusing namespace std;const int maxn = 200;struct bign{ int len, s[maxn]; bign() { memset(s, 0, sizeof(s)); len = 1; } bign(int num) { *this = num; } bign
2013-12-10 21:24:44 656
原创 【C源码】最大乘积问题
//输入n个数,输出n个数字的最大乘积//暴力枚举法练习//《算法竞赛入门经典》P115第七章 7.1.2#include#include#define MAX 20int main(void){ int i,j; int sum=0; int n; int num[MAX]; scanf("%d",&n); for(i=1;i<=n;i+
2013-12-10 21:21:17 668
转载 C++对文件的输入输出
#includeusing namespace std;ifstream fin("aplusb.in");ofstream fout("aplusb.out");int main(){ int a,b; while(fin >> a >> b) fout<< a+b << "\n" ; return 0;}
2013-12-09 21:50:30 449
原创 【动态规划】【RQNOJ】第2题 开心的金明 C源码
#include#include#define MAX 30000+1int main(void){ int v[25+1]; int p[25+1]; int num[MAX]={0}; int number,money; int i,j; scanf("%d %d",&money,&number); for(i=
2013-12-05 21:41:23 661
转载 学习kruskal
伪代码: 把所有边排序,记第i小的边为e[i] (1 初始化最小生成树为空 初始化连通分量,让每一个点自成连通分量 for(int i=0;i { if(e[i].u与e[i].v不在同一个连通分量) { 把边e[i]加入到最小生成树中 合并e[i].u和e[
2013-12-03 21:51:39 557
原创 【wikioi 3145】汉诺塔游戏C代码
//汉诺塔 #include#includevoid work(int n,int s,int t) //参数如上面所说{ char x='A'+s-1; //方便输出字母 char y='A'+t-1; if(n == 1) //结束条件 { printf("%d from %c to %c\n",n,
2013-12-02 21:26:09 954
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人