遍历列表里面的内容  如果都为0 最终状态为 "N" ,  假如都大于一个定值X  则最终状态为 "A"  否则为状态  "P" 
此段逻辑代码怎样写比较好呀? 数据结构学的不好  感觉自己写的很别扭

解决方案 »

  1.   

    排序以后再检查就好办了吧。最小值和最大值都等于0;最小值>X;其它...----------------------------------------------------------------
    很抱歉,没有时间详细解释。通过搜索引擎查找问题及回复的关键词可能会有帮助。
      

  2.   

    定义数组arr1,把你的数放进去。int j=0;k=0;
    int x=60;
    string status="";
    for(i=0;i<arr1.length;i++)
    {
       if(arr1[i]==0)
        j++;
       if(arr1[i]>x)
        k++;
    }if(j==arr1.length)
     status="N";
    else if(k==arr1.length)
     status="A";
    else 
     status="P";
      

  3.   


    排序是个好办法
    效率比二楼高对列表绑定的数据源进行排序
    比如数据源dt排序
    dt.default.sort("value","ASC");
    还要操作才可以string strStatus = "";
    if(dt.rows[0]["value"] == 0 && dt.rows[dt.rows.count -1]["value"] == 0)
    {
       strStatus = "N";
    }
    else if(dt.rows[0]["value"] > X)
    {
       strStatus = "A";
    }
    else
    {
       strStatus = "P";
    }Response.Write("<script>alert('类型:"+strStatus+"')</script>");
      

  4.   

    谢谢楼上的解答 上面的方法也可以哦~  我现在是建了个全0的数组 , 等于0 数组对应值为0;   >X 数组对应值为2  其他为1  最后把数组相加 得到的值 为 0    2N 或者其他   
      

  5.   

    int[] nums = {  6, 7, 8, 5, 9 };
    string res = "N";
    int n = 4;//特定值
    for (int i = 0; i < nums.Length; i++)
    {
        if (nums[i] <= n)
            res = "P";
        res = "A";
    }
    Console.WriteLine("最终状态为" + res);
      

  6.   

    排序的话不是反倒耽误时间吗
    看第一个数就能排除至少一个状态
    第一个数是0的话看是否全是0,有一个不是就返回p,否则返回N
    第一个数不是0的话看是否全大于X,有一个不是也返回p,否则返回A
      

  7.   

    应该先判断一下定值X 
    Case 1 :如果(X<0 )以X = -1为例,遍历表的内容全为0 那么最终状态是 无法确定是“N” 还是“A”
    Case 2 :如果(X>=0)以X = 1为例,遍历表的内容全为0 那么最终状态是 无法确定是“N” 还是“p”
      

  8.   


    ArrayList arr = new Arraylist()
    int constValue = 4;//特定值
    bool isN = false;
    bool isA = false;
    bool isP = false;
    string returnValue = "P"
    foreach ( int arrValue in arr)
    {
       isN =isN&&(arrValue==0);
       isA =isA&&(arrValue>constValue);
    }
    if (isN)
    {
      returnValue="N";
    } else
    if (isA)
    {
      returnValue="A"
    }
    /*
    这里缺少一种情况:当constValue为小于0的一个值时 
    那么返回值可以满足"N"的同时也可以满足为"A",不知道楼主想怎么处理,
    我的这段逻辑就是把它归为"N"*/
      

  9.   

    List<int> arr = new Arraylist<int>()
    int constValue = 4;//特定值
    bool isN = false;
    bool isA = false;
    bool isP = false;
    string returnValue = "P"
    foreach ( int arrValue in arr)
    {
       isN =isN&&(arrValue==0);
       isA =isA&&(arrValue>constValue);
    }
    if (isN)
    {
      returnValue="N";
    } else
    if (isA)
    {
      returnValue="A"
    }
    /*
    这里缺少一种情况:当constValue为小于0的一个值时 
    那么返回值可以满足"N"的同时也可以满足为"A",不知道楼主想怎么处理,
    我的这段逻辑就是把它归为"N"*/
      

  10.   

    哦  发现多定义了一个变量isP 没什么太大的意义
      

  11.   

    int zeronum=0,dayunum=0,X;//X为定值
    List <int> arr = new Arraylist <int>() 
    foreach (int arrValue in arr )
    {
    if (arrValue-0==0)
    {
    zeronum ++;
    }
    else if (arrValue- X >0)
    {
    dayunum++;
    }
    else 
    {//设置状态为P并跳出 ;
    }
    }
    if (zeronum == 数组的长度)
    {//设置状态为N;
    }
    if (dayunum == 数组的长度)
    {//设置状态为A ;
    }
    我的大体思路是这样拉.下班拉,自己将就着看吧.
      

  12.   


    6楼的方法好象少了个break不过方法和我想的一样nums = {  6, 7, 8, 5, 9 };
    string res = "N";
    int n = 4;//特定值
    for (int i = 0; i < nums.Length; i++)
    {
        if (nums[i] <= n)
        {
            res = "P";
            break;
        }
        res = "A";
    }
    Console.WriteLine("最终状态为" + res);