首页 > 试题广场 >

三角形三边数字求和

[编程题]三角形三边数字求和
  • 热度指数:1203 时间限制:C/C++ 5秒,其他语言10秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
如下图所示的三角形,有三个边s1,s2,s3,边s1有四个圆圈⭕️1,2,3,4,边s2有四个圆圈⭕️4,5,6,7,边s3有四个圆圈⭕️7,8,9,1
把1-9这9个数字,分别填写到下图所示的9个圆圈圆圈里, 使每条边上的4个圆圈⭕️的和相等(9个圆圈里的数字不能重复)
例如:s1=[1=>9,2=>8,3=>1,4=>3]=9+8+1+3=21,s2=[4=>3,5=>5,6=>7,7=>6]=3+5+7+6=21,s3=[7=>6,8=>2,9=>4, 1=>9]=6+2+4+9=21

输入描述:
输入内容格式:
3,4,8,5,2,6,7,1,9
其中 
3,4, 8,5 是s1 1-4填写的数字,数字之和20
5,2,6,7 是s2 4-7填写的数字,数字之和20
7,1,9,3 是s4 7-1填写的数字,数字之和20



输出描述:
当输入的数字满足三边之和相等的时候,输出yes
当输入的数字不满足三边之和相等的时候,输出no
示例1

输入

3,4,8,5,2,6,7,1,9

输出

yes
示例2

输入

3,4,8,5,2,6,9,7,1

输出

no

备注:

var nums = []int{1, 2, 3, 4, 5, 6, 7, 8, 9}   //允许填写的数字
var result [][]int   //合法结果集

func permute(nums []int) [][]int {
   //write code here
}

C语言小白
#include <stdio.h>
#include <stdlib.h>

int main(){
    int num[9];
    char c[9];
    int i;
    for(i = 0;i<9;i++){
        scanf("%d,%s",&num[i],c[i]);
    }
    if(num[0]+num[1]+num[2]+num[3] == num[3]+num[4]+num[5]+num[6] &&num[3]+num[4]+num[5]+num[6] == num[6]+num[7]+num[8]+num[0])
    {
        printf("yes");
    }else{
        printf("no");
    }
    return 0;
}


发表于 2022-10-26 16:29:36 回复(0)
lst=list(map(int,input().split(',')))
if sum(lst[:4])==sum(lst[3:7]) and lst[0]+sum(lst[6:])==sum(lst[3:7]):
    print('yes')
else:
    print('no')

发表于 2022-10-08 19:49:29 回复(0)
import java.util.*;
public class Main {
       public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String i = scanner.next();
        String[] str = i.split(",");
        ArrayList<Integer> list = new ArrayList<>();
        for (String s : str) {
            list.add(Integer.parseInt(s));
        }
       
        int n1 = list.get(0) + list.get(1) + list.get(2) + list.get(3);
        int n2 = list.get(3) + list.get(4) + list.get(5) + list.get(6);
        int n3 = list.get(6) + list.get(7) + list.get(8) + list.get(0);

        if (n1 == n2 && n2 == n3) {
            System.out.println("yes");
        } else {
            System.out.println("no");
        }
        }
    
}


编辑于 2022-03-18 12:12:29 回复(0)
c++可以增加一个字符变量接收逗号,不过要注意最后一个没有逗号
#include<stdio.h>
#include<iostream>
usingnamespacestd;
intmain()
{
    inta[9], sum1, sum2, sum3;
    chart;
    for(inti = 0; i < 9; i++)
    {
        cin >> a[i];
        if(i!=8)
            cin >> t;
    }
    sum1 = a[0] + a[1] + a[2] + a[3];
    sum2 = a[3] + a[4] + a[5] + a[6];
    sum3 = a[6] + a[7] + a[8] + a[0];
    if(sum1 == sum2 && sum2 == sum3)
        printf("yes");
    else
        printf("no");
 
}
发表于 2022-03-16 16:22:33 回复(0)
while(line = readline())
    {
        let arr = line.split(',')
        let a = parseInt(arr[0])+parseInt(arr[1])+parseInt(arr[2])+parseInt(arr[3])
        let b = parseInt(arr[3])+parseInt(arr[4])+parseInt(arr[5])+parseInt(arr[6])
        let c = parseInt(arr[6])+parseInt(arr[7])+parseInt(arr[8])+parseInt(arr[0])
        if(a == b && b == c){
            console.log('yes')
        }
        else{
            console.log('no')
        }
        
    }
发表于 2021-09-06 23:03:34 回复(0)
def sum(str):
    a=str[0]+str[1]+str[2]+str[3]
    b = str[3] + str[4] + str[5] + str[6]
    c = str[6] + str[7] + str[8] + str[0] if a==b and a==c and b==c: print('yes') else: print('no') #例子:3,4,8,5,2,6,7,1,9  yes    3,4,8,5,2,6,9,7,1  no n=input()
n=n.split(',')
str=[] for i in n:
    str.append(int(i))
sum(str)
发表于 2021-06-05 13:18:10 回复(0)
#大致思路,三边相等的话,求出平均数肯定等于其中一边
def sum(*args):
    one=0
    c=0  #s1的和
    for i in range(len(args)):
        one=one+args[i]
        if i == 3:  #s1的边长              
            c=one      
            one=one+args[i]
        elif i ==6:      #s2的边长
            one = one + args[i]         
        elif i==8:        #s3边长
            one=one+args[0]
    if one / 3 == c:
        print('yes')
    else:
        print('no')
#a=(int(i) for i in input('please input number:'))
# print(a)
a=(3,4,8,5,2,6,7,1,9)
sum(*a)

编辑于 2021-04-26 16:20:00 回复(0)
print('please input the 9 numbers:')
L=input()
print('the input is ', L)
X=list(L)
firstArr = X[0:4]
secArr = X[3:7]
thirArr = X[6:9] + list(X[0])
firstSum = 0
secSum = 0
thirdSum = 0
for i in range(0, 4):
firstSum += int(firstArr[i])
for i in range(0, 4):
secSum += int(secArr[i])
for i in range(0, 4):
thirdSum += int(thirArr[i])
if firstSum == secSum and secSum ==thirdSum:
print('Yes')
else:
print('No')

发表于 2021-03-22 11:10:29 回复(0)
用split分割字符串,存到字符串数组里,再转换成int的数组。之后相加比较就可以了。

发表于 2021-03-20 18:07:14 回复(0)