A Graph Problem

本文探讨了一种特定的递归数列求解方法,并通过动态规划思想实现了递归数列的有效计算。针对一系列整数n,展示了如何利用递归公式f[n]=f[n-2]+f[n-3]来解决实际问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://acm.hust.edu.cn/vjudge/contest/view.action?cid=31329#problem/D

做出前6组的情况;

当n = 1 ,{1};

当n = 2 , {1} , {2};

当n = 3, , {1 , 3 } , { 2 } ;

当n = 4 , { 1 , 3 } , { 2 , 4 } , { 1 , 4 };

当n = 5, { 1 , 3 , 5 } , { 2 , 4 } { 1 , 4 } , { 2, 5

......................

由此可知,当n与其前一个数相差一个位置的等于分f[ n - 2 ] ,相差两个位置的等于f[ n - 3 ] ;

所以f[ n ] = f[ n - 2 ] + f[ n -3 ] ;

可以理解为DP的思想,假设当n= 5 时,因为{1,3}已经出现过,相隔4后{1,3,5}不改变原有数目,但是2————>5,又有一条路,所以改变f[n]的值仅有f[ n -2 ] 和f[ n - 3 ]有影响;

#include<map>
#include<set>
#include<list>
#include<cmath>
#include<ctime>
#include<deque>
#include<stack>
#include<bitset>
#include<cstdio>
#include<vector>
#include<cstdlib>
#include<cstring>
#include<iomanip>
#include<numeric>
#include<sstream>
#include<utility>
#include<iostream>
#include<algorithm>
#include<functional>

using namespace std ;
const int maxn = 77 ;
long long  f[ maxn ] = { 0 , 1 , 2 , 2} ;

void Union()
{
	for( int i = 4 ; i < maxn ; ++i )
	{
		f[ i ] = f[ i - 2 ] + f[ i - 3 ] ;
	}
}

int main()
{
	int n ;
	Union();
	while( scanf( "%d" , &n ) != EOF )
	{
		printf( "%lld\n" , f[ n ] ) ;
	}	 
	return 0 ;
}


### 图论的核心概念及其应用 图论作为离散数学的一个重要分支,在计算机科学领域有着广泛的应用。它不仅用于解决理论问题,还被应用于实际场景中的建模和优化。 #### 基本定义与核心概念 图是一种由节点(顶点)集合 \(V\) 和边集合 \(E\) 组成的结构[^1]。每条边可以是有向或无向的,并可能带有权重或其他属性。基于这些基本特性,图可以分为多种类型,例如有向图、无向图、加权图以及带标签的图等。 在知识表示和数据库设计中,数据图、分类法(taxonomies)和本体(ontologies)是最常见的形式之一。它们通常采用自顶向下(top-down)的设计方法来构建复杂的语义网络。 #### 应用实例 以下是几个典型的图论应用场景: 1. **社交网络分析**:通过将用户视为节点,关系视为边,研究群体行为模式和社会影响传播路径。 2. **搜索引擎算法**:PageRank 是一种利用网页链接结构计算页面重要性的经典例子。 3. **物流配送规划**:最短路径问题(Shortest Path Problem)、旅行商问题(Traveling Salesman Problem, TSP)等都是经典的运筹学难题,可借助图模型求解最优方案。 4. **机器学习框架**:神经网络本质上也是一种特殊的图结构;而概率图模型则提供了另一种表达复杂依赖关系的方式。 #### 高级主题与发展前沿 随着技术进步,一些新兴方向值得关注: - 动态图处理:传统静态图难以满足实时更新需求,因此动态变化下的高效查询成为热点课题; - 大规模分布式存储与计算:针对超大规模稀疏矩阵操作提出了许多创新解决方案; - 跨学科融合趋势明显——比如结合数论探讨特定类型的整数方程组解空间分布规律时可能会涉及迪奥芬廷逼近等内容[^3]。 ```python import networkx as nx G = nx.Graph() # 创建一个空的无向图对象 G nodes = [&#39;A&#39;, &#39;B&#39;, &#39;C&#39;] edges = [(&#39;A&#39;,&#39;B&#39;), (&#39;B&#39;,&#39;C&#39;)] weights = {(&#39;A&#39;,&#39;B&#39;):7 ,(&#39;B&#39;,&#39;C&#39;):5} for node in nodes: G.add_node(node) for edge in edges: u,v=edge w=weights.get(edge,None) if not w==None : G.add_edge(u,v,weight=w) print("Nodes:",list(G.nodes)) print("Edges with weights:") for e,d in G.edges.items(): print(f"{e}: weight={d[&#39;weight&#39;]}") ``` 以上代码片段展示了如何使用 Python 的 NetworkX 库创建并初始化简单加权无向图的过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值