鱼C论坛

 找回密码
 立即注册
查看: 1328|回复: 5

各路C++大牛们 求助啊求助啊

[复制链接]
发表于 2015-2-15 09:31:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这是我作业老师闪空给我自己写function中的一个:红色字体为老师给出
也就是body自己写
功能:比较两个vector list1与list2中是否包含彼此的元素
若list1中包含list2中的所有种类元素则
list1 contains list2 :yes
若不是则返回:no
同理
若list2中包含list1中的所有种类元素则
list2 contains list1:yes
若不是则返回:no
bool contains(const std::vector<int>& list1, const std::vector<int>& list2) {
    vector<int>lista=list1;
    vector<int>listb=list2;

    bool NoYes(int);
    int m,n;

    for(m=0;m<lista.size();m++)
        {
            for(n=0;n<listb.size();n++)
            {
                if(lista[m]==listb[n])  
                    break;

            }   
        if(lista[m]!=listb[listb.size()])                        
        return true;  
                       //else return false;
    }
}


我这个循环问题啊 帮忙看看哪里错了呗

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-2-15 13:49:45 | 显示全部楼层
break; 只能跳出单层循环 如果一直相等好像没有返回值啊 能编译通过吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-2-16 03:21:05 | 显示全部楼层
李小白 发表于 2015-2-15 13:49
break; 只能跳出单层循环 如果一直相等好像没有返回值啊 能编译通过吗?

昨天太着急 急着赶校车...没有表达清楚
我想实现的是两个乱序vector list1 与 list2中元素是否contains
eg list1 :3 4 5 4 3 5
     list2 :3 4 5
list1 contians list2 ? :yes
list2 contians list1 ? :yes

eg list1 :3 4 4 5 7
     list2 :3 4 5
list1 contians list2 ? :yes
list2 contians list1 ? :no

这是举得例子!

我采取两层循环
【1】从list1的第一个元素与list2的一个元素开始比较
【2】直到找到list2中与其相等的元素
【3】若找到 跳出第二层循环 外层循环加1 重复【1】
         若找不到说明list2 contains list1 ?:No 直接跳出全部的循环

咋整啊 咋整啊 咋跳出全部的循环啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-2-16 12:23:55 | 显示全部楼层
课本上的东西不太懂 是否是这个意思呢? 就是方法好像比较笨

for(m=0;m<lista.size();m++)
         
{
            
    for(n=0;n<listb.size();n++)
            
    {
               
       if(lista[m]==listb[n])  
                    
       break;

           
     }

     if(n==listb.size())
    {                       
         
         list2 不包含 list1
         break;
         
     }  
         
   
}

if(m==lista.size())
{                       
         
    list2 包含 list1         
}


for(n=0;n<lista.size();n++)
         
{
            
    for(m=0;m<listb.size();m++)
            
    {
               
       if(lista[m]==listb[n])  
                    
       break;

           
     }

     if(m==listb.size())
    {                       
         
         list1 不包含 list2
         break;
         
     }  
         
   
}

if(n==lista.size())
{                       
         
    list1 包含 list2        
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-2-20 01:39:03 | 显示全部楼层
李小白 发表于 2015-2-16 12:23
课本上的东西不太懂 是否是这个意思呢? 就是方法好像比较笨

for(m=0;m

不成
bool contains(const std::vector<int>& list1, const std::vector<int>& list2) {
    for(unsigned int i=0;i<list2.size();i++){

        if(find(list1.begin(),list1.end(),list2[i])!=list1.end()){
    }else{return 0;}
            }
return 1;
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-2-20 01:40:22 | 显示全部楼层
bool contains(const std::vector<int>& list1, const std::vector<int>& list2) {
    for(unsigned int i=0;i<list2.size();i++){

        if(find(list1.begin(),list1.end(),list2[i])!=list1.end()){
    }else{return 0;}
            }
return 1;
}
这是好使的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 17:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表