n2

合并两个排序好的数组

浪子不回头ぞ 提交于 2020-01-27 09:13:53
/** * 合并两个排序好的数组 * @param arr1 * @param arr2 * @param n1 * @param n2 * @param arr3 */ public static void mergeArrays ( int [ ] arr1 , int [ ] arr2 , int n1 , int n2 , int [ ] arr3 ) { int i = 0 , j = 0 , k = 0 ; // Traverse both array while ( i < n1 && j < n2 ) { // Check if current element of first // array is smaller than current element // of second array. If yes, store first // array element and increment first array // index. Otherwise do same with second array if ( arr1 [ i ] < arr2 [ j ] ) arr3 [ k ++ ] = arr1 [ i ++ ] ; else arr3 [ k ++ ] = arr2 [ j ++ ] ; } // Store remaining elements

PAT1016乙级c语言

南笙酒味 提交于 2020-01-27 05:34:29
#include<stdio.h> #include<string.h> int main() { int l1,l2,i,n1=0,n2=0; char A[11],B[11],Alittle,Blittle; scanf("%s %c %s %c",&A,&Alittle,&B,&Blittle); l1=strlen(A); l2=strlen(B); for(i=0;i<l1;i++) { if(A[i]==Alittle) { n1=n1 10+Alittle-‘0’; } } for(i=0;i<l2;i++) { if(B[i]==Blittle) { n2=n2 10+Blittle-‘0’; } } printf("%d",n1+n2); return 0; } 来源: CSDN 作者: XITMan 链接: https://blog.csdn.net/XITMan/article/details/104044509

双序列比对的理论基础之建造替换矩阵的合理性证明

大憨熊 提交于 2020-01-26 19:39:32
双序列比对的理论基础之建造替换矩阵的合理性证明  前言:如果对最大似然估计没有概念的话,可以看看我之前写的《似然,似然,似是而然》  结合前几篇文章我们大致的了解了计分矩阵的流程:对某以蛋白质家族进行多序列对比,然后按某一阈值(等同残基比)进行聚类,之后将匹配的无空位的区域划分为block,然后统计各个block中残基之间的联配的频率,用归一化的频率估计概率,进行 最大似然估计 ,估计出在自然界中各残基联配的概率(即匹配模型M的参数)。   《双序列比对的基础(2)之替换(计分)矩阵系列》提出了疑问:怎么没进行最大似然估计啊?没有列似然函数啊,没有求极值点啊。从样本数据得到的频率怎么直接估计为总体的参数呢? 所以怀疑建造的替换矩阵是不合理的!  那么本文就探讨探讨这个问题。  首先,之前我们说过我们必须将生物学的问题抽象成数学模型。而残基对之间的联配可看做是多项分布。多项分布是二项分布的推广。  二项分布就是我抛出一枚硬币,它的结果不是正面就是反面。我们抛出10次,计算出现5次正面的概率很简单。而多项分布则是我扔色子会有六种状态,现在我扔了十次,我想知道出现事件A(A事件=点数为1出现2次和点数为2出现4次和点数为3出现1次和点数为4出现1次和点数为5出现1次和点数为6出1次。)的概率是多少?注意在多项分布中,每个状态出现的频率必须大于0!  

浅谈二分算法

我的梦境 提交于 2020-01-25 22:08:57
二分算法 程序或算法的时间复杂度 基本概念 一个程序或算法的时间效率,也称“时间复杂度”,有时简称“复杂度” 复杂度常用大写字母 O O O 和小写字母 n n n 来表示, n n n 代表问题的规模 时间复杂度是用算法运行过程中,某种时间固定的操作需要被执行的次数和 n n n 的关系来衡量的。在无序数列中查找某个数,复杂度是 O ( n ) O(n) O ( n ) 。 计算复杂度的时候,只统计执行次数最多的( n n n 足够大时)那种固定操作的次数。比如某个算法需要执行加法 n 2 n^2 n 2 次,除法 n n n 次,那么就记其复杂度是 O ( n 2 ) O(n^2) O ( n 2 ) 的。 复杂度有“平均复杂度”和“最坏复杂度”两种。两者可能一致,也可能不一致。一般情况下,只需考虑“平均复杂度”,只有在要求极为严格的情况下,才需要考虑“最坏复杂度” 如果复杂度是多个 n n n 的函数之和,则只关心随 n n n 增长增长得最快的那个函数 O ( n 2 + n 3 ) = > O ( n 3 ) O(n^2+n^3)=>O(n^3) O ( n 2 + n 3 ) = > O ( n 3 ) O ( 2 n + n 2 ) = > O ( 2 n ) O(2^n+n^2)=>O(2^n) O ( 2 n + n 2 ) = > O ( 2 n ) O ( n

扩展中国剩余定理

女生的网名这么多〃 提交于 2020-01-13 04:11:34
若有以下两个同余方程 x ≡ a1 mod n1 x ≡ a2 mod n2 x= n1*k1+a1 = n2*k2+a2 ∴ n1*k1 = n2*k2+a2-a1 ∴ n1*k1 ≡ a2-a1 mod n2 由扩展欧几里得定理得,同余方程有解的条件是 gcd(n1,n2) | (a2-a1) 令d=gcd(n1,n2),c=a2-a1 则n1/d * k1 ≡ c/d mod n2/d ∴ k1 = c/d * inv(n1/d)mod n2/d 令k=c/d * inv(n1/d),则k1 = k + (n2/d)*y ∴ x=n1*(k + (n2/d)*y)+a1 =(n1*n2/d)*y+n1*k+a1 即 x ≡ n1*k+a1 mod n1*n2/d 所以上面两个方程合并为 x ≡ a mod n 其中 a=n1*k+a1 n=n1*n2/d #include<cstdio> #include<iostream> using namespace std; typedef long long LL; int n[11],a[11]; void read(int &x) { x=0; char c=getchar(); while(!isdigit(c)) c=getchar(); while(isdigit(c)) { x=x*10+c-'0'; c=getchar

分布式系统CAP为什么不能同时满足?

血红的双手。 提交于 2020-01-11 09:26:10
分布式系统当中有一个著名的 CAP 理论,它也是分布式系统理论的基础。 CAP理论最早发表于2000年,由加州伯克利的教授首先在ACM PODC会议上提出猜想,两年之后,被麻省理工学院的教授Seth Gilbert和Nancy Lynch从理论上证明。从此之后,它成了分布式系统领域的公认定理。 今天这篇文章就和大家聊聊这个大名鼎鼎的CAP理论。 CAP理论描述起来其实很简单,它说的是 一个分布式系统最多只能满足C(一致性)、A(可用性)和P(分区性)这三者当中的两个 。我们先来看一下这三项分别代表了什么。 Consistency 一致性 分布式系统当中的一致性指的是 所有节点的数据一致 ,或者说是 所有副本的数据一致 。用英文描述是: All the nodes see the same data at the same time 。它和数据库事务中的一致性是两码事,在我们之前的文章里,曾经详细描述过分布式系统中的各种一致性模型,感兴趣的同学可以点击这里。 我们可以将一致性一分为二,分别从 客户端和服务端 进行探究。对于客户端而言,并不关心后端的实现,也不关心后端的节点运行情况。唯一只关心 多次并发访问下都能获得准确的符合预期的结果 。比如用户多次点击付款,也只会付款一次,余额无论什么时候查询都是当下最新的值。 而服务端关心的是会引发数据变更的请求过来,

ABC #150 E. Change a Little Bit

筅森魡賤 提交于 2020-01-11 03:55:33
题目 。 经过一番分析,问题归为求 $\sum_{i=0}^{n} \binom{n}{i} (i+1)$。 考虑多项式 $p(x) := \sum_{i=0}^{n} \binom{n}{i} (i+1)x^{i}$,所求即 $p(1)$。 注意到 $p(x) = \sum_{i=0}^{n} \binom{n}{i} (x^{i + 1})' = (\sum_{i=0}^{n} \binom{n}{i} x^{i + 1})'$。 而 $\sum_{i=0}^{n} \binom{n}{i} x^{i + 1} = x \sum_{i=0}^{n} \binom{n}{i} x^{i} = x(x+1)^{n}$。 故 $p(x) = (x(x+1)^{n})' = (x+1)^{n} + nx(x+1)^{n-1}$,于是 $p(1) = 2^{n} + n2^{n - 1}$。 又 $\sum_{i=0}^{n} \binom{n}{i} (i+1) = 2^{n} + \sum_{i=0}^{n} \binom{n}{i} i$,于是有 $\sum_{i=0}^{n} \binom{n}{i} i = n2^{n-1}$。 来源: https://www.cnblogs.com/Patt/p/12178828.html

PAT甲级——A1010 Radix

痞子三分冷 提交于 2020-01-10 18:39:01
Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 110 be true? The answer is yes , if 6 is a decimal number and 110 is a binary number. Now for any pair of positive integers N ​ 1 ​​ and N ​ 2 ​​, your task is to find the radix of one number while that of the other is given. Input Specification: Each input file contains one test case. Each case occupies a line which contains 4 positive integers: N1 N2 tag radix Here N1 and N2 each has no more than 10 digits. A digit is less than its radix and is chosen from the set { 0-9, a - z } where 0-9 represent the decimal

《DSP using MATLAB》Problem 3.1

为君一笑 提交于 2020-01-10 15:52:26
先写DTFT子函数: function [X] = dtft(x, n, w) %% ------------------------------------------------------------------------ %% Computes DTFT (Discrete-Time Fourier Transform) %% of Finite-Duration Sequence %% Note: NOT the most elegant way % [X] = dtft(x, n, w) % X = DTFT values computed at w frequencies % x = finite duration sequence over n % n = sample position vector % w = frequency location vector M = 500; k = [-M:M]; % [-pi, pi] %k = [0:M]; % [0, pi] w = (pi/M) * k; X = x * (exp(-j*pi/M)) .^ (n'*k); % X = x * exp(-j*n'*pi*k/M) ; 下面开始利用上函数开始画图。结构都一样,先显示序列x(n),在进行DTFT,画出幅度响应和相位响应。 代码: %% ----------

leetcode004 寻找两个有序数组的中位数

独自空忆成欢 提交于 2020-01-09 03:32:28
题目描述 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 。 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。 你可以假设 nums1 和 nums2 不会同时为空。 解法1 依次遍历这两个有序数组的元素,如果长度分别为len1,len2直到找到第(len1+len2)/2的元素 class Solution { public double findMedianSortedArrays(int[] nums1, int[] nums2) { int n1 = nums1.length; int n2 = nums2.length; int i = 0; int j = 0; int[] array = new int[(n1 + n2) / 2 + 1]; int index = 0; // 找到第(n1+n2)/2小的数 while(index < array.length) { if (i < n1 & j < n2) { if (nums1[i] < nums2[j]) { array[index++] = nums1[i++]; } else { array[index++] = nums2[j++]; } } else if (i >= n1) { array[index++] = nums2[j++]; }