浙大PAT 1053题 1053. Path of Equal Weight

2024-02-26 22:08
文章标签 浙大 path pat equal weight 1053

本文主要是介绍浙大PAT 1053题 1053. Path of Equal Weight,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

/*
关键是要想到:不要在过程中考虑排序,好的做法是
先将每次的结果保存在字符串中,最后排序输出。 
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define maxn 108
int wgt[maxn],map[maxn][maxn],vst[maxn],res[maxn];
char ans[maxn][2*maxn];
int n,m,s,cnt;
void dfs(int from,int sum,int step){
int i,j;
if(sum>s) return;
if(sum==s){
for(i=0;i<n;i++){
if(map[from][i]==1) 
return;
}
for(i=0;i<=step;i++){
ans[cnt][i]=res[i];
}
ans[cnt][i]='\0';
cnt++;
return;
}	
for(i=0;i<n;i++){
if(vst[i]==0&&map[from][i]==1){
vst[i]=1;
res[step+1]=wgt[i];
dfs(i,sum+wgt[i],step+1);
vst[i]=0;
}
}
return;
}
int cmp(const void* tmpa,const void* tmpb){
char* a=(char*)tmpa;
char* b=(char*)tmpb;
return strcmp(b,a);
}
int main(){
int i,j,k;
int f,t;
scanf("%d %d %d",&n,&m,&s);
for(i=0;i<n;i++){
scanf("%d",&wgt[i]);
}
for(i=0;i<n;i++){
vst[i]=0;
for(j=0;j<n;j++){
map[i][j]=0;
}
}
for(i=0;i<m;i++){
scanf("%d %d",&f,&k);
for(j=0;j<k;j++){
scanf("%d",&t);
map[f][t]=1;
}
}
cnt=0;
vst[0]=1;
res[0]=wgt[0];
dfs(0,wgt[0],0);
qsort(ans,cnt,sizeof(ans[0]),cmp);
for(i=0;i<cnt;i++)  {  
for(j=0;j<strlen(ans[i])-1;j++)  
printf("%d ",ans[i][j]);  
printf("%d\n",ans[i][j]);  
}  
return 0;
}

这篇关于浙大PAT 1053题 1053. Path of Equal Weight的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/750305

相关文章

浙大数据结构:树的定义与操作

四种遍历 #include<iostream>#include<queue>using namespace std;typedef struct treenode *BinTree;typedef BinTree position;typedef int ElementType;struct treenode{ElementType data;BinTree left;BinTre

浙大数据结构:04-树7 二叉搜索树的操作集

这道题答案都在PPT上,所以先学会再写的话并不难。 1、BinTree Insert( BinTree BST, ElementType X ) 递归实现,小就进左子树,大就进右子树。 为空就新建结点插入。 BinTree Insert( BinTree BST, ElementType X ){if(!BST){BST=(BinTree)malloc(sizeof(struct TNo

浙大数据结构:02-线性结构4 Pop Sequence

这道题我们采用数组来模拟堆栈和队列。 简单说一下大致思路,我们用栈来存1234.....,队列来存输入的一组数据,栈与队列进行匹配,相同就pop 机翻 1、条件准备 stk是栈,que是队列。 tt指向的是栈中下标,front指向队头,rear指向队尾。 初始化栈顶为0,队头为0,队尾为-1 #include<iostream>using namespace std;#defi

Flask 创建app 时候传入的 static_folder 和 static_url_path参数理解

Flask 在创建app的时候 是用 app = Flask(__name__) 来创建的,不传入 static_folder参数的话 ,默认的静态文件的位置是在 static目录下 我们可以进入 Flask的源码里面查看 ctrl+鼠标左键进入 这是Flask的 __init__源码(后面还有一些,我就选了需要的代码)     def __init__(self,import_

浙大数据结构——03-树1 树的同构

这道题我依然采用STL库的map,从而大幅减少了代码量 简单说一下思路,两棵树是否同构,只需比较俩树字母相同的结点是否同构,即是否左==左,右==右或者左==右,右==左。 1、条件准备 atree和btree是存两个数结点字母,第几个就存输入的第几个结点的字母。 map通过结点的字母作为键,从而找到两个子节点的信息 都要用char类型 #include <iostream>#inc

浙大数据结构:堆栈和队列的定义与操作

堆栈: 顺序存储: #include<stdio.h>#include<stdlib.h>typedef int ElementType ;typedef int position ;#define MAXSIZE 100#define ERROR -1struct SNode {ElementType * Data ;position top;int Maxsize;};

(4)SVG-path中的椭圆弧A(绝对)或a(相对)

1、概念 表示经过起始点(即上一条命令的结束点),到结束点之间画一段椭圆弧 2、7个参数 rx,ry,x-axis-rotation,large-arc-flag,sweep-flag,x,y (1)和(2)rx,ry rx:椭圆的x轴半径(即水平半径) ry:椭圆的y轴半径(即垂直半径) 这两个参数好理解,就是椭圆的两条对称轴半径,相等即为圆 也可以写比例,写比例时默认用符合条件

PAT甲级-1044 Shopping in Mars

题目   题目大意 一串项链上有n个钻石,输入给出每个钻石的价格。用m元买一个连续的项链子串(子串长度可为1),如果不能恰好花掉m元,就要找到最小的大于m的子串,如果有重复就输出多个,按递增顺序输出子串的前端和后端索引。 原来的思路 取连续的子串使和恰等于m,没有恰等于就找最小的大于。可以将子串依次累加,使得每个位置都是起始位置到该位置的序列和,整个数组显递增顺序,就可以用右边减左边

【ArcGIS Pro实操第二期】最小成本路径(Least-cost path)原理及实操案例

ArcGIS Pro实操第一期:最小成本路径原理及实操案例 概述(Creating the least-cost path)1.1 原理介绍1.2 实现步骤1.3 应用案例 2 GIS实操2.1 工具箱简介2.1.1 成本路径(Cost path)2.1.2 成本距离(Cost distance)2.1.2 路径距离(Path Distance) 2.2 案例: 参考 概述(Cre

大数据Java基础-JAVA IO 9】java IO流 (九) Path、Paths、Files的使用

1.NIO的使用说明: >Java NIO (New IO,Non-Blocking IO)是从Java 1.4版本开始引入的一套新的IO API,可以替代标准的Java IO AP。 >NIO与原来的IO同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的(IO是面向流的)、基于通道的IO操作。 >NIO将以更加高效的方式进行文件的读写操作。 >随着 JDK 7 的发布,Java对N