程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> ZOJ-1067基本運算題

ZOJ-1067基本運算題

編輯:關於C語言

1067:給出16種RGB值作為基准,將後來的顏色值映射到距離最近的顏色。

距離的定義為

 

Example

 Input

 0 0 0

255 255 255

0 0 1

1 1 1

128 0 0

0 128 0

128 128 0

0 0 128

126 168 9

35 86 34

133 41 193

128 0 128

0 128 128

128 128 128

255 0 0

0 1 0

0 0 0

255 255 255

253 254 255

77 79 134

81 218 0

-1 -1 -1

 

Output

 

(0,0,0) maps to (0,0,0)

(255,255,255) maps to (255,255,255)

(253,254,255) maps to (255,255,255)

(77,79,134) maps to (128,128,128)

(81,218,0) maps to (126,168,9)

 

 

 

簡單題。依次計算找距離最小即可。

 

C++代碼

#include<stdio.h> 

#include<iostream> 

using namespace std; 

 

int color[16][3]; 

int main() 

    int R,G,B; 

    int index; 

    int diff; 

    int cal; 

 

    //目標顏色

    for(int i=0;i<16;i++) 

    { 

        cin>>color[i][0]; 

        cin>>color[i][1]; 

        cin>>color[i][2]; 

    } 

 

    while(1) 

    { 

        index=-1; 

        diff=-1; 

        cin>>R; 

        cin>>G; 

        cin>>B; 

         

        if(R==-1&&G==-1&&B==-1) 

            break; 

 

        for(int i=0;i<16;i++) 

        { 

            cal=(R-color[i][0])*(R-color[i][0])+(G-color[i][1])*(G-color[i][1])+(B-color[i][2])*(B-color[i][2]); 

            if(diff==-1||cal<diff) 

            { 

                diff=cal; 

                index=i; 

            } 

        } 

 

        printf("(%d,%d,%d) maps to (%d,%d,%d)\n",R,G,B,color[index][0],color[index][1],color[index][2]); 

 

    } 

 

 

     

}   

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved