摘要: 注意的情况比较多,尤其是空树这一种#include <iostream> #include <stdlib.h> using namespace std; const int maxn=100; struct node { int s,f; node* next; };//在此数据结构采用链表,方便后续遍历算法 int indexNode[maxn];//用于构造索引的数组 int v[maxn]; node *head; int totNode;//节点的总数 void visitNode(int temNode) { node* p=head->next; v 阅读全文
posted @ 2012-09-18 19:00 LJ_COME!!!!! 阅读(258) 评论(0) 推荐(0)
摘要: 知识点:栈的应用语法经验,主函数外的函数中的指针变量不能付给主函数中的指针,因为函数调用完后就会释放内存,赋值相当于没赋#include<iostream>using namespace std;const int maxn=110;void trans(char *exp,char *atexp);int oc( char *s);int main(){ int t=1,jud; char exp[maxn]; char atexp[maxn]; while(cin.getline(exp,maxn)) { trans(exp,atexp); jud=oc(atexp); cha 阅读全文
posted @ 2012-09-15 20:50 LJ_COME!!!!! 阅读(158) 评论(0) 推荐(0)
摘要: 本题目的dfs原理不难,个人认为难点式路径的记录,刚开始定义了很大的数组,提交的时候超出了内存的限制,后来在网上发现有的人用了栈存储,纠结了半天终于搞出来啦。#include <stdio.h> #include <string.h> int flag; int st[7]; int head; int in[6]; int digit; int digit2; int num1,max; int de; void dfs(int cur,int sum) { if(cur>=digit2) { if(sum>max) { max=sum; flag=1; 阅读全文
posted @ 2012-07-02 11:41 LJ_COME!!!!! 阅读(126) 评论(0) 推荐(0)
摘要: 此题的本质问题就是对无向图的着色,使颜色使用最少的问题#include <stdio.h>#define maxn 27typedef struct Node{ int next[maxn]; int tot;}node;int main(){ int n; while(scanf("%d",&n)&&n!=0) { getchar();//吸收回车 node map[maxn]; int i,j,k; for(i=0;i<n;i++)//建图 { map[i].tot=0; getchar();//吸收每行的首字母,因为是字典序输 阅读全文
posted @ 2012-07-01 11:30 LJ_COME!!!!! 阅读(107) 评论(0) 推荐(0)
摘要: 直接暴力的#include <stdio.h>#include <string.h>#define maxn 21int matrix[maxn][maxn];int sel[maxn];int n;int max;int tot;void select(int cur){ if(cur==n) { if(tot==n||tot==0) return; int i,j; int amount=0; for(i=0;i<n;i++) { if(!sel[i]) continue; for(j=0;j<n;j++) { if(sel[j]) continue; 阅读全文
posted @ 2012-06-24 19:46 LJ_COME!!!!! 阅读(103) 评论(0) 推荐(0)
摘要: bfs不解释#include <stdio.h>#define maxn 101int visit[maxn][maxn];int vol[2];//容量int c;int flag;typedef struct TNode//定义状态{ int cop[2]; int fa;//父节点 int dis;//距离 int op;//操作}Node;Node node[maxn*maxn];void printPath(int tem)//递归打印操作{ if(node[tem].op!=-1) printPath(node[tem].fa); if(node[tem].op!=-1 阅读全文
posted @ 2012-06-22 19:18 LJ_COME!!!!! 阅读(129) 评论(0) 推荐(0)
摘要: 这道题wa了很多次,原因是PI的精度问题,精度一定很大#include <stdio.h>#define maxn 100010#define PI 3.14159265358979323846 int main(){ int amount; scanf("%d",&amount); while(amount--) { int n,f; scanf("%d%d",&n,&f); int i; double pie; double s[maxn]; double high=0; double low=0; for(i=0 阅读全文
posted @ 2012-06-15 21:05 LJ_COME!!!!! 阅读(110) 评论(0) 推荐(0)
摘要: 二分,至今仍不知为什么事单调关系,但是做此题之前,知道此题考查二分,所以就递增和递减都做了一下,最后发现是单调递增的;#include <stdio.h>#include <math.h>int main(){ double l,n,c; while(scanf("%lf %lf %lf",&l,&n,&c)) { if(l<0) break; double ll,ang; ll=(1+n*c)*l; double high=l;//为了保险定大一点 double low=0; double mid; while((hi 阅读全文
posted @ 2012-06-15 19:40 LJ_COME!!!!! 阅读(100) 评论(0) 推荐(0)
摘要: 解题方法:二分,因为移走石头的数目和最短的跳跃距离是单调关系,所以考虑用二分,并且一个距离可能有多个石头数目对应,表现在坐标图中就是一条平行于x轴的线段。还有关于代码中的二分的循环我想详细说明一下:high定位实际上界+1,是利用了左开右闭,这样的好处是当low=high时,区间中的元素就没有了,这样更易理解。因为肯定有解,所以经过循环low一定会等于当前解+1,然后寻找下一对于本题来说更优的解,所以到最后Low-1就是最后即最优的解;#include <cstdio>#include <algorithm>using namespace std;#define max 阅读全文
posted @ 2012-06-14 17:05 LJ_COME!!!!! 阅读(104) 评论(0) 推荐(0)
摘要: 二分,至今仍很纠结#include <stdio.h> #define maxn 100010 int n,m; int judge(int mid,int* ex) { int gr=1;//!!!!!!!!!!!! int sum=0; int i; for(i=0;i<n;i++) { if((sum+ex[i])<=mid) { sum+=ex[i]; } else { gr++; sum=ex[i];//!!!!!!!!!! } } if(gr>m) return 1;//说明小了 else return 0; } in... 阅读全文
posted @ 2012-06-13 18:30 LJ_COME!!!!! 阅读(121) 评论(0) 推荐(0)