小编use*_*448的帖子

二进制搜索以查找数字所在的范围

我有一个阵列

Values array: 12 20 32 40 52
              ^  ^  ^  ^  ^
              0  1  2  3  4
Run Code Online (Sandbox Code Playgroud)

我必须在其上执行二进制搜索以找到数字所在范围的索引.例如:

  1. 给定数字 - > 19(它位于索引0和1之间),返回0
  2. 给定数字 - > 22(它位于索引1和2之间),返回1
  3. 给定数字 - > 40(位于索引3和4之间),返回3

我以下面的方式实现了二进制搜索,这对于案例1和3来说是正确的但是如果我们搜索案例2或52,55 32等则不正确.

#include <iostream>
using namespace std;

int findIndex(int values[], int number, unsigned first, unsigned last)
{
    unsigned midPoint;
    while(first<last)
    {
        unsigned midPoint = (first+last)/2;
        if (number <= values[midPoint])
            last = midPoint -1;
        else if (number > values[midPoint])
            first = midPoint + 1;
    }
    return midPoint;
}


int main() …
Run Code Online (Sandbox Code Playgroud)

c++

8
推荐指数
1
解决办法
2万
查看次数

使用删除按钮删除WPF Datagrid中的行

我的WPF应用程序窗口上有一个数据网格,数据绑定到一个可观察的集合.在DataGrid中,我设置了属性CanUserDeleteRows=True,我可以通过按键盘上的"删除"按钮删除该行.

这对我来说看起来不太直观.我想保留一个额外的列,其中按下删除按钮,该行应删除.(类似于ASP.NET中的ItemTemplate可以做的事情)

<DataGrid x:Name="dgrQuestions" AutoGenerateColumns="False" Height="224" HorizontalAlignment="Left" Margin="42,73,0,0" VerticalAlignment="Top" Width="663" ItemsSource="{Binding QueList}" CanUserAddRows="True" CanUserDeleteRows="True">
            <DataGrid.Columns>                
                <DataGridTextColumn Header="Qu" Binding="{Binding Path=Que, UpdateSourceTrigger=PropertyChanged}"/>
                <DataGridTextColumn Header="An" Binding="{Binding Path=Ans, UpdateSourceTrigger=PropertyChanged}"/>
                <DataGridTextColumn Header="Hi" Binding="{Binding Path=Hi, UpdateSourceTrigger=PropertyChanged}"/>

            </DataGrid.Columns>
Run Code Online (Sandbox Code Playgroud)

如何使用buttondatagrid本身内部来获取删除行的功能

c# wpf

5
推荐指数
1
解决办法
2万
查看次数

从单个集合生成所有子集

我试图理解代码从一组生成所有子集.这是代码

#include <stdio.h>

/* Applies the mask to a set like {1, 2, ..., n} and prints it */
void printv(int mask[], int n) {
    int i;
    printf("{ ");
    for (i = 0; i < n; ++i)
        if (mask[i])
            printf("%d ", i + 1); /*i+1 is part of the subset*/
    printf("\\b }\\n");
}

/* Generates the next mask*/
int next(int mask[], int n) {
    int i;
    for (i = 0; (i < n) && mask[i]; ++i)
        mask[i] = 0;

    if …
Run Code Online (Sandbox Code Playgroud)

c++

1
推荐指数
1
解决办法
4140
查看次数

标签 统计

c++ ×2

c# ×1

wpf ×1