自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 符号三角回溯

#include<stdio.h> int n; int p[1000][1000]; int sum,half,count,k; void dfs(int k){ if(k>n){ if(count==half){ sum++; } return ; } else{ for(int i=0;i<=1;i++){ p[1][k]=i; count+=i; for(int j=2;j<=k;j++){ p[j][k-j.

2022-05-19 20:18:02 75

原创 排列---回溯

任务描述 1.设计算法从前m个大写字母(m≤26)种取出n个字母的所有排列(组合),并编程实现 输入格式 输入M N 1<=M=26, N<=M 输出格式 按字典序输出排列 注意:行末不输出多余空格 Sample Input 4 2 Sample Output A B A C A D B A B C B D C A C B C D D A D B D C #include<stdio.h> #include<string.h> char a[100

2022-05-16 15:39:55 84 1

原创 TSP问题

输入格式 第一行输入n,代表有n个城市。 接下来n行每行输入n个数,第i行j列的值代表i市到j市的距离,0代表城市之间不通 注意:起点和终点都为1 n<7,城市之间的距离都不超过100 输出格式 第一行输出最少的旅行费用 第二行输入旅行路径 (保证只有一条最短旅行路径) Sample Input 4 0 30 6 4 30 0 5 10 6 5 0 20 4 10 20 0 Sample Output 25 1 3 2 4 1 #include<stdio.h> int

2022-05-16 15:38:01 110

原创 N皇后问题

任务描述 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。 你的任务是,对于给定的N,求出有多少种合法的放置方法。 输入格式 共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;如果N=0,表示结束。 输出格式 共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量。 Sample Input 1 8 5 0 Sample Output 1 92 10 #include<st

2022-05-16 15:35:02 61

原创 01背包----回溯

输入格式 第一行输入n,c,分别代表物品的数量和背包的容量 第二行输入n个数 分别代表每个物品的重量 第三行输入n个数,分别代表每个物品的价值 1<n<100,1<c<100,重量不超过100,价值不超过1000 输出格式0 输出一个数,代表能装入的最大价值 Sample Input 4 7 3 5 2 1 9 10 7 4 Sample Output 20 #include<stdio.h> int n,c; int w[100],v[100]; in

2022-05-16 15:33:47 67

原创 0-1背包

#include<stdio.h> int main(){ int n,c,i,j; int w[100],v[100],x[100]; scanf("%d %d",&n,&c); int m[100][100];//m[i][j] i代表可选物品为i,i+1,,,n, j代表背包容量 for(i=1;i<=n;i++){ scanf("%d %d",&w[i],&v[i]); } for(j=0;j<=c;j++){ if.

2022-04-21 09:14:25 66

原创 最长公共子序列

#include<stdio.h> #include<string.h> #include<stdlib.h> int main(){ char a[100]; char b[100]; scanf("%s",a+1); scanf("%s",b+1); int lena=strlen(a+1); int lenb=strlen(b+1); int i,j,k,l; int c[100][100],m[100][100]; char z[100].

2022-04-20 21:14:19 157

原创 最大子段和问题的求解(动态规划)

对于给定序列a1,a2,a3……an,寻找它的某个连续子段,使得其和最大。如( -2,11,-4,13,-5,-2 )最大子段是{ 11,-4,13 }其和为20。 输入 6 -2 11 -4 13 -5 -2 输出 20 #include<stdio.h> int main(){ int n; int arr[100],k[100]; scanf("%d",&n); int i; for(i=1;i<=n;i++){ scanf("%d",&ar

2022-04-01 16:49:39 394

原创 最长单调子序列

给定一个序列,求这个序列的最长上升子序列的长度,并输出这个最长上升子序列,题目保证,最长上升子序列只有一个。 第一行输出一个数,代表最长上升子序列的长度。 第二行打印这个子序列。 输入 8 5 2 8 6 3 6 5 7 输出 4 2 3 6 7 #include<stdio.h> #include<stdlib.h> const int N=100; int dp[N],s[N],arr[N],tt[N]; int main(){ int n; scanf("%

2022-04-01 16:33:32 107

原创 最大子段和(分治算法)

int maxsubsum(int *a,int left,int right){ int maxsum; if(left==right){ maxsum=a[left]>0?a[left]:0; } else{ int mid; mid=(left+right)/2; int i,j; int leftsum=maxsubsum(a,left,mid); int rightsum=maxsubsum(b,mid+1;right); int maxlefts=0,maxrig.

2022-03-17 21:02:28 120

原创 最大子段和的简单算法

最大子段和的简单算法 int maxsum(int n,int *a,int& besti,int& bestj){ int maxsum=0; for(i=0;i<n;i++){ int sum=0; for(j=i;j<n;j++){ sum=sum+a[j]; if(sum>maxsum){ besti=i; bestj=j; maxsum=sum; } } } return maxsum; }

2022-03-17 20:10:40 52

原创 整数划分。。

将正整数n 表示成一系列正整数之和,n=n1+n2+…+nk, 其中n1>=n2>=…>=nk>=1 ,k>=1 。 正整数n 的这种表示称为正整数n 的划分。正整数n 的不同的划分个数称为正整数n 的划分数。 对给定的整数,输出对应的划分数。 测试输入:5 预期输出:7 测试输入:6 预期输出:11 提示: 对于样例一,可以划分的情况是: 5, 4+1, 3+2, 3+1+1, 2+2+1, 2+1+1+1, 1+1+1+1+1 故可以划分为7种 代码实现:

2022-03-14 20:38:07 119

excels.vue

excels.vue

2023-01-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除