当前位置:编程学习 > C#/ASP.NET >>

有史以来最难的电脑题目

我定这个题目不是为了吸引注意力,而是,我在网上搜了一天都没有一点头绪。
问题是这样。建立一个windows窗体,上面有gridview1,gridview2,和button1
窗体装载事件是往gridview1填充数据,部分数据如下:(ID是自动编号,单词和单元下面是每个单元出现的单词)
ID   单词   单元
1    apple  1
2    pear   1
3    dog    2
4    apple  2
5    apple  3
6    dog    3
…… ……  ……
要求点击button1之后gridview2中填充运行结果。也就是把单词这一列中列出所有的单词,重复的单词列出来要在单元这一列标出在哪个单元,用逗号隔开。
单词   单元
apple  1,2,3
pear   1
dog    2,3

…… …… ……

该问题在网上没有一个真正有效的答案,很多都是按照作者给出的三四行数据来编,只是用来处理三四行数据,不能进行动态处理。大家看看有什么好方法?
--------------------编程问答-------------------- 设计一个杂凑算法,把字符串转成长整型数,然后进行比较 --------------------编程问答-------------------- 看看, --------------------编程问答-------------------- 有成长性以后单个循环如何结束? --------------------编程问答-------------------- struct POS
{
    vector<int> lineno;
};

std::map<string, POS> mapline; // 如果考虑空间效率,这里可以使用POS*

for (int i = 0; i < strArray.Count; i++)
{
    string str = strArray[i];
    std::map<string, POS>::iterator item = mapline.find(str);
    if (item == mapline.end())
    {
        POS a;
        a.lineno,push_back(i); // 保存行号到vector中
         mapline.insert(std::pair<string, POS>(str, a));
    }
    else
    {
        (*item).second.pusk_back(i); // 保存行号到vector中
    }
}

// 这样的话我们就知道了所有单词出现在哪些行了,剩下的就是从mapline中读取出来
std::map<string, POS>::const_iterator item;
for (item = mapline.begin(); item != mapline.end(); item++)
{
    string strdanci = (*item).first // key 就是所有单词
     POS& danciposArray = (*item).second; // 单词出现的行数
     string strDancihangshustring;
     MakeDanciHangshu(danciposArray, strDancihangshustring);
}

MakeDanciHangshu(const POS& danciposArray, string& strDancihangshustring);
{
    for (int i = 0; i < danciposArray.lineno.size(); i++)
    {
        if (i == 0)
        {
            strDancihangshustring = itoa(danciposArray.lineno[i]);
        }
        else
        {
            strDancihangshustring += ",";
            strDancihangshustring += itoa(danciposArray.lineno[i]);
        }
    }
}

好啦 这样问题就搞定了
起始stl中有很多算法模板可以用的,很方便。 --------------------编程问答-------------------- 顶楼上。。。 --------------------编程问答-------------------- --------------------编程问答-------------------- 由于显然地题目与内容不符,所以就不作答了。 --------------------编程问答-------------------- --------------------编程问答-------------------- 晕,这个题目有什么难的?用linq可以轻松搞定 --------------------编程问答-------------------- 应该从数据源上考虑吧?跟gridview无关。。。
补充:.NET技术 ,  非技术区
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,