K-based Numbers

本文探讨了如何计算特定条件下K进制数的有效数量,避免连续的零出现。使用递归函数解决这一问题,通过C语言实现算法,并提供了一个示例程序。该程序能够接收用户输入的N和K值,计算并输出所有N位K进制数中有效数的数量。

K-based Numbers

Time Limit: 1000MS Memory limit: 65536K

题目描述

Let’s consider K-based numbers, containing exactly N digits. We define a number to be valid if its K-based notation doesn’t contain two successive zeros. For example: (1)1010230 is a valid 7-digit number; (2)1000198 is not a valid number; (3)0001235 is not a 7-digit number, it is a 4-digit number. Given two numbers N and K, you are to calculate an amount of valid K based numbers, containing N digits. You may assume that 2 ≤ K ≤ 10; N ≥ 2; N + K ≤ 18.

输入

The numbers N and K in decimal notation separated by the line break.

输出

The result in decimal notation.

示例输入

2 10

示例输出

90
#include<stdio.h>
#include<string.h>
int f[101];
int k;
int D(int n,int k)
{
    if(n==1)
        return f[1]=k-1;
    if(n==2)
        return f[2]=(k-1)*k;
    else
        return f[n]=(k-1)*(D(n-1,k)+D(n-2,k));
}
int main()
{
    int n;
    while(~scanf("%d %d",&n,&k))
    {
        memset(f,0,sizeof(f));
        D(n,k);
        printf("%d\n",f[n]);
    }
    return 0;
}

  

 

转载于:https://www.cnblogs.com/guoyongzhi/p/3232992.html

### K-Means++ Algorithm Explanation and Implementation #### Initialization Method of K-Means++ The initialization method used by K-Means++ aims at improving the initial centroid selection process compared to standard K-Means, which randomly selects centroids from data points. By setting `init="k-means++"` within the `KMeans()` function call, this enhanced initialization strategy gets applied automatically[^1]. This approach ensures that initially chosen cluster centers are spread out more evenly across the space occupied by input samples rather than being clustered together due to random chance. #### Iterative Nature of K-Means As an iterative algorithm, K-Means refines its partitioning through successive iterations until convergence criteria are met or a maximum number of iterations has been reached. During each iteration, two main steps occur: - Assignment Step: Each sample is assigned to the nearest cluster center based on Euclidean distance. - Update Step: Cluster centers get recalculated as the mean position of all members belonging to their respective clusters. These operations continue cyclically until no significant changes happen between consecutive rounds regarding assignments or positions of centroids[^2]. #### Code Example for Implementing K-Mean with K-Means++ Initialization Below demonstrates how one can implement K-Means clustering using scikit-learn's built-in support for K-Means++ initialization via Python code snippet: ```python from sklearn.cluster import KMeans import numpy as np # Generate synthetic dataset X = np.random.rand(100, 2) # Initialize model with k-means++ model = KMeans(n_clusters=3, init='k-means++') # Fit model & predict labels labels = model.fit_predict(X) ``` In this example, after generating some artificial data points stored inside variable X, initializing a new instance of class `KMeans` specifies three desired numbers of clusters (`n_clusters`) alongside employing 'k-means++' scheme during construction phase before fitting it against our fabricated dataset finally obtaining predicted label assignments per observation post-training completion. #### Applications Scenarios Suitable For Using K-Means++ Given its simplicity yet effectiveness under certain conditions like spherical shaped distributions without overlaps among groups along with computational efficiency advantages over other sophisticated alternatives especially when dealing large scale datasets makes K-Means including variant such as K-Means++ suitable choice for various real-world problems ranging from customer segmentation analysis in marketing research up till image compression techniques leveraging color quantization methods where reducing palette size while preserving visual quality matters most[^3].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值