栈
20.有效的括号
#include <stdio.h>
#include <string.h>
char ch1[200], ch2[200];
int answer1();
int answer2();
void main()
{
gets(ch1);
int i =answer1();
if(i == 0) printf("answer1 = Fruse\n");
else printf("answer1 = True\n");
int j = answer2();
if(j == 0) printf("answer2 = Fruse");
else printf("answer1 = True");
}
int answer1()
{
int i, answer = 0, n=0;
char j;
for(i = 0; i < strlen(ch1); i ++){
j = ch1[i];
if(j == '(' || j == '[' || j == '{'){
ch2[i] = ch1[i];
}
else{
if(j == ')'){
if(ch2[n] =='('){
answer = 1;
n ++;
}
}
else if(j == ']'){
if(ch2[n] =='['){
answer = 1;
n ++;
}
}
else if(j == '}'){
if(ch2[n] =='{'){
answer = 1;
n ++;
}
}
}
}
if(answer == 0) return 0;
else return 1;
}
int answer2()
{
int count = 0, length = strlen(ch1);
for(int i = 0; i < length; i ++){
if(ch1[i]=='(' || ch1[i]=='[' || ch1[i]=='{'){
ch2[count] = ch1[i];
count ++; //前括号的个数
}
if(ch1[i]==')' || ch1[i]==']' || ch1[i]=='}'){
if(count-1>=0 && ch2[count-1]-ch1[i]<0 && ch2[count-1]-ch1[i]>=-2) //ASCII表中,左括号与右括号相差1或2
count --;
else return 0;
}
}
if(count == 0) return 1;
else return 0;
}
42.接雨水
#include<stdio.h>
void answer1(int height[], int length);
void answer2(int height[], int length);
int main()
{
int length, i, j;
scanf("%d", &length);
int height[length];
for(i = 0; i < length; i ++)
scanf("%d", &height[i]);
answer1(height, length);
answer2(height, length);
}
void answer1(int height[], int length)
{
int i, j, sum=0; //总积水量
int max; //最高的墙的高度
for(i = 0; i < length; i ++){
if(max < height[i]) max = height[i];
}
for(i = 1; i <= max; i ++){
int t = 0;
for(j = 0; j < length-1; j ++){
if(t && height[j]<i) sum ++;
if(height[j] >= i) t = 1;
}
}
printf("answer1 = %d\n", sum);
}
void answer2(int height[], int length)
{
int i, j, sum = 0;
for(i = 1; i < length; i ++){
int left = 0;
for(j = i-1; j >= 0; j --){
if(height[j] > left) left = height[j];
}
int right = 0;
for(j = i+1; j < length; j ++){
if(height[j] > right) right = height[j];
}
int min = left < right ? left : right;
if(min > height[i]) sum = sum + (min-height[i]);
}
printf("answer2 = %d\n", sum);
}
7673

被折叠的 条评论
为什么被折叠?



