算法

 

// Stack.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <string>

using namespace std;
const int MAX_NUM = 65535;


bool Test(int *pnBuffer, int nLen)
{
 int nTemp = 0;
 int nMin = 0;
 bool bFirst = true;
 
 for (int i = 1; i < nLen - 1; ++i)
 {
  nTemp = pnBuffer[i];      // 保存出栈序列中的值     
  for (int j = i + 1; j < nLen; ++j)
  {
   if (pnBuffer[j] < nTemp && bFirst)  // 后面的数比该数小,逆序
   {
    nMin = pnBuffer[j];    // 取出后面的第一个数
    bFirst = false;
    continue;
   }
   if (pnBuffer[j] > nMin && pnBuffer[j] < nTemp && !bFirst)  
   {
    return false;
   }  
  }
  bFirst = true;
 }

 return true;
}

BOOL SplitString(char *pcBuffer, int *pnBuffer)
{
 char seps[] = " ";
 char *token = NULL;
 int i = 0;

 token = strtok(pcBuffer, seps);
 int nLen = atoi(token);
 pnBuffer[0] = nLen;

 while (token != NULL)
 {
  ++i;
  token = strtok( NULL, seps );
  if (token != NULL)
  {
   pnBuffer[i] = atoi(token);
  }    
 }

 return TRUE;
}


int main(int argc, char* argv[])
{
 int nIndex = 0;
 char cBuffer[MAX_NUM] = {0};
 int pnBuffer[MAX_NUM] = {0};
 string strInput("");
 
 printf("请输入:\r\n");
 while (TRUE)
 {
  if (fgets(cBuffer, MAX_NUM, stdin) == NULL)
  {
   break;
  }

  SplitString(cBuffer, pnBuffer);
  if (Test(pnBuffer, pnBuffer[0]))
  {
   printf("1\r\n");
  }
  else
  {
   printf("0\r\n");
  }


  memset(cBuffer, '\0', MAX_NUM);
  memset(pnBuffer, '\0', MAX_NUM);
 }

 return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值