华为一道机试

int IsMatch(char* str )
{
  assert(str!=NULL);
  stack<char> stk;
  int bResult=0;

  while(*str!=NULL)
  {
	  if(*str=='['||*str=='(')
	  stk.push(*str);
     
      if(*str==']')
	   {  d
		 if(stk.empty())
	     { 
		   bResult=1;
	       break;
	     }
	    else if(stk.top()=='[')
		{  
		   stk.pop();	   
	    }
		else
		{
		  bResult=1;
		  break;
		}
	   }

	  if(*str==')')
	  {  
		 if(stk.empty())
	     { 
		   bResult=1;
	       break;
	     }
	    else if(stk.top()=='(')
		{
		   stk.pop();	   
	    }
		else
		{
		   bResult=1;
		   break;
		}
	 }
	 str++;
	 
  }
if(!stk.empty())
		 bResult=1;
return bResult;

}


### 华为OD真实题目与编程练习资料 华为OD的题目通常分为多个版本,例如A卷、B卷、C卷等[^2]。这些卷可能包含一些历史题目的重复以及新增加的内容。对于准备此类考的人来说,了解历年真题及其解法是非常重要的。 #### 历年真题分析 在2023年的华为OD中,有一道关于Java实现分糖果的经典算法问题被广泛讨论,并提供了详细的解题思路和代码示例[^1]。这表明该类题不仅考察基本语法掌握情况,还注重逻辑思维能力的应用。 以下是基于上述提到的一道典型例题——“分糖果”的解决方案: ```java import java.util.*; public class CandyDistribution { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); // 孩子数量 int m = scanner.nextInt(); // 糖果总数 List<Integer> distributionList = distributeCandies(n, m); System.out.println(distributionList.toString()); } private static List<Integer> distributeCandies(int childrenCount, int candyTotal){ List<Integer> result = new ArrayList<>(childrenCount); for (int i=0;i<childrenCount;i++) { result.add(0); } while(candyTotal > 0){ for(int j=0; j<result.size() && candyTotal >0 ;j++){ result.set(j,result.get(j)+1); candyTotal--; } } return result; } } ``` 此程序实现了公平分配一定量的糖果给若干名儿童的过程。通过循环遍历列表来逐一增加每位孩子的糖果数直到没有剩余为止。 #### 获取更多资源的方法 为了更好地备战华为OD,可以参考牛客网上的专项训练模块以及其他公开渠道分享的相关经验贴。特别是针对不同类型的算法设计模式进行深入学习,比如动态规划、贪心策略等高级技巧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值