摘要:这个不解释,DFS的经典应用,不过很容易超时最好用文件输出,貌似dev上显示的排列不全#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<time.h> int vis[20];
int A[20];
int n;
void dfs(int cur)
{ if(cur == n+1) { int i; for(i=1;i<=n;i++) { printf("%d",A[i]); ...
阅读全文
摘要:我知道二叉树有先序遍历,中序遍历,后续遍历等等,不过这里说的的是输入一些点(11,LL) (7,LLL) (8,R) (5,) (4,L) (13,RL) (2,LLR) (1,RRR) (4,RR) ( );对这些点进行构建出对应的二叉数,并对其进行层次遍历。过程为:1. 定义结构体变量(表示有关结点及特征)2. 函数--申请结点3. 函数---增加新结点4. 对数据处理,进入输入过程(建树过程)5. 对数的层次遍历,利用的是宽度优先搜索(队列)#include<stdio.h>#include<stdlib.h>#include<string.h>#in
阅读全文
摘要:我学识所限,见的东西较少,做这个回文字符串的最少添加问题时绞尽脑汁,加之当天似乎不太舒服那整的是相当头蒙的,一个错误的方法可以使你愈陷愈深,最后请教了一下其他人,得知:只用把字符串逆序,然后求其最大公共子序列,用字符串长度减去LCR值即可,至于为什么,我也不知道为何这样做,只知道这样做是对的,知识匮乏啊#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>char a[1000+10],b[1000+10];int max[1010][1010];int main
阅读全文
摘要:DFS,好像主要是对dfs的递归调用吧,自己也不太懂,总之,它很神奇,多看看代码吧#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>int n;int isp[100];int vis[100]; int A[100];int is_prime(int x) //判断一个数是否为素数(该数比较小,不会引起超时) { int i=1,k; for(i=2;i<=(k=(int)sqrt(x));i++) if(x % i == 0)break; if(i&
阅读全文
摘要:这个问题据说是dp问题,不过我觉得只用到了一点dp知识,先把矩形排序,宽对应宽长对应长;然后对宽或者长进行排序(二级排序),再找出另一方的最大上升子序列,即可。#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h># define maxn 1000int cmp(const void *a,const void *b){ int* c = (int *)a; int* d = (int *)b; if(*c != *d) return *c - *d; retu
阅读全文