关闭

多边形游戏源代码

1001人阅读 评论(1) 收藏 举报

 

上课的时候突然发现这个算法有点小小的变动,就改了一下,大家慢慢看:
#include <stdio.h>
#include 
<stdlib.h>
#include 
<ctype.h>
#include 
<iostream.H>

#define N 5         //可以通过改N的值来达到您的需求,当然如果你有兴趣的话,
                           
// 也可以自己编写一个动态数组实现的来改进算法。^_^

char op[N];
int  minf, maxf, m[N][N][2];
void PolyMax();
void MinMax(int i, int j, int k);

int main(int argc, char* argv[])
{
    
int i;
    
char ch;
    
    printf(
"********************************************************* ");
    printf(
"* 实验二:多边形游戏 * ");
    printf(
"********************************************************* ");
    
    
    printf(
"请输入您要进行的六元算式,注意运算符只能是“+”或者“*”! S=");
    
for (i = 0; i < N; i ++
    
//    printf("请输入一个顶点的值: ");
        scanf("%d"&m[i][0][0]);
        m[i][
0][1= m[i][0][0];
    
//  printf("请输入一个运算符(+or*): ");
        while((ch = getchar())&& isspace(ch));
          op[i] 
= ch;
    }


    PolyMax();

    
return 0;
}


void PolyMax()
{
    
int i, j, k, max,flag;

    
for (j = 1; j < N; j ++)
        
for (i = 0; i < N; i ++)
            
for (k = 0; k < j; k ++{
                MinMax(i, j, k);
                
if (m[i][j][0> minf) m[i][j][0= minf;
                
if (m[i][j][1< maxf) m[i][j][1= maxf;
            }


    max 
= m[0][N - 1][1];
    flag
=0+1;
    
for (i = 1; i < N; i ++)
        
if (max < m[i][N - 1][1])
            max 
= m[i][N - 1][1];
            flag
=i+1;
        }



    printf(
"计算所得的最大值是:%d 这个最大值在删去边%d后得到。 ", max,flag);
}


void MinMax(int i, int j, int k)
{
    
int e[4],  
        a 
= m[i][k][0], 
        b 
= m[i][k][1],
        r 
= (i + k + 1% N,
        c 
= m[r][j - k - 1][0],
        d 
= m[r][j - k - 1][1];

    
if (op[(r - 1 + N) % N] == '+'{
        minf 
= a + c;
        maxf 
= b + d;
    }
 else {
        e[
0= a * c;
        e[
1= a * d;
        e[
2= b * c;
        e[
3= b * d;
        minf 
= e[0];
        maxf 
= e[0];
        
for (int k = 1; k < 4; k ++{
            
if (minf > e[k]) minf = e[k];
            
if (maxf < e[k]) maxf = e[k];
        }

    }

}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:217045次
    • 积分:2916
    • 等级:
    • 排名:第12081名
    • 原创:58篇
    • 转载:64篇
    • 译文:1篇
    • 评论:67条
    最新评论