http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 11077|回复: 12

[学生提问] 问题

[复制链接]
发表于 2015-4-8 21:46:36 | 显示全部楼层 |阅读模式
1金钱
java中这条语句    trace.remove(trace.size()-1);     是什么意思     对应c#中怎么写啊   我在c#中写上trace.Remove(trace.Count-1);这句话不起作用,有那个大神指点一下  谢谢



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2015-4-9 08:17:19 | 显示全部楼层
[C#] 纯文本查看 复制代码
  List<int> trace = new List<int>();
            trace.Remove(trace.Count - 1);

这个的意思就是删除最后一条
回复

使用道具 举报

 楼主| 发表于 2015-4-9 09:29:51 | 显示全部楼层
站长苏飞 发表于 2015-4-9 08:17
[mw_shl_code=csharp,true]  List trace = new List();
            trace.Remove(trace.Count - 1);[/mw_ ...

我在程序上加上这句话不起作用   删除跟加上输出结果一样  是什么原因啊   初学者  谢谢指点  谢谢
回复

使用道具 举报

发表于 2015-4-9 09:37:07 | 显示全部楼层
把你的代码贴全一些。谁知道你的trace是什么啊
回复

使用道具 举报

 楼主| 发表于 2015-4-9 09:45:24 | 显示全部楼层
站长苏飞 发表于 2015-4-9 09:37
把你的代码贴全一些。谁知道你的trace是什么啊

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace ww
{
    class Program
    {
        private int n;
        private int[] visited; //节点状态,值为0的是未访问的
        private int[,] e; //有向图的邻接矩阵
        private List<int> trace = new List<int>(); //从出发节点到当前节点的轨迹
        private bool hasCycle = false;
        public Program(int n, int[,] e)
        {
            this.n = n;
            visited = new int[n];
            //java.util.Arrays.fill(visited,0);
            this.e = e;
        }
        internal virtual void findCycle(int v) //递归DFS
        {
           
            if (visited[v] ==1)
            {
                int j;
                if ((j = trace.IndexOf(v))!=-1)
                {
                    hasCycle = true;
                    Console.Write("Cycle:");
                    while (j < trace.Count)
                    {
                        Console.Write(trace[j] + " ");
                        j++;
                    }
                    Console.WriteLine();
                    return;
                }
               return;
            }
           
            visited[v] =1;
            trace.Add(v);
         
            for (int i = 0; i < n; i++)
            {
                if (e[v,i]==1)
                {
                    findCycle(i);
                }
              
            }

         trace.Remove(trace.Count-1);
        }
         
        public virtual bool HasCycle
        {
            get
            {
                return hasCycle;
            }
        }
        static void Main(string[] args)
        {
            int n = 18;
            int[,] e = {
                       {0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
               {0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0},
               {0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
               {0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0},
               {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
               {0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0},
               {0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0},
               {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
               {0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0},
               {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
               {0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
               {0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0},
               {0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0},
               {0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0},
               {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0},
               {0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0},
               {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0},
               {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0}};
            Program tc = new Program(n, e);
            tc.findCycle(1);
            if (!tc.hasCycle)
            {
                Console.WriteLine("No Cycle.");
            }
            Console.ReadKey();
        }
    }
}
就是这个  您看看  它输出的结果第二条环路包含第一条的怎么把第二条中第一条的删除,  您看看怎么改改    初学者  不太懂   谢谢指点  谢谢
回复

使用道具 举报

发表于 2015-4-9 09:51:35 | 显示全部楼层
你调试一下看看,你确实  trace.Remove(trace.Count-1);这个执行了吗,如果执行了就肯定会删除最后一个,如果没有就是你的逻辑有了问题。

这个语句是肯定可以的。不用怀疑
回复

使用道具 举报

 楼主| 发表于 2015-4-9 09:56:48 | 显示全部楼层
站长苏飞 发表于 2015-4-9 09:51
你调试一下看看,你确实  trace.Remove(trace.Count-1);这个执行了吗,如果执行了就肯定会删除最后一个,如 ...

我把程序给您了   您帮我看看  谢谢   我找了好长时间了   没找到错误   但是输出结果就是不对    你帮着看一下吧  谢谢
回复

使用道具 举报

发表于 2015-4-9 10:03:26 | 显示全部楼层
你会调试吗?你这个就没有几行程序,调试一下就出来了。

我告诉你,还没有你调试能理解的快。

[C#] 纯文本查看 复制代码
  static void Main(string[] args)
        {
            int n = 18;
            int[,] e = {
                       {0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 
               {0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0}, 
               {0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 
               {0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0},
               {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
               {0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0}, 
               {0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0}, 
               {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
               {0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0},
               {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
               {0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
               {0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0},
               {0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0},
               {0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0},
               {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0},
               {0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0},
               {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0},
               {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0}};
            Program tc = new Program(n, e);
            tc.findCycle(1);
            trace.Remove(trace.Count - 1);
            if (!tc.hasCycle)
            {
                Console.WriteLine("No Cycle.");
            }
            Console.ReadKey();
        }


把trace.Remove(trace.Count - 1); 加到tc.findCycle(1);的下面,效果是一样的。不一样的是你的方法是不会执行的,递归里你用的Return。所以下在的方法是不会执行的。
回复

使用道具 举报

 楼主| 发表于 2015-4-9 10:17:35 | 显示全部楼层
站长苏飞 发表于 2015-4-9 10:03
你会调试吗?你这个就没有几行程序,调试一下就出来了。

我告诉你,还没有你调试能理解的快。

您给看看怎么改   帮着把它做出来  我再好好学    急着用   谢谢   非常感谢
回复

使用道具 举报

 楼主| 发表于 2015-4-9 10:19:06 | 显示全部楼层
qiliang321 发表于 2015-4-9 10:17
您给看看怎么改   帮着把它做出来  我再好好学    急着用   谢谢   非常感谢

您是大神   给看一下  帮着给我看看做出来   谢谢   
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-5-16 08:22

© 2014-2021

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